Veuillez noter : Nous avons publié une nouvelle version de la recherche de Publications et du décompte des Publications dans X API v2. Nous vous encourageons à découvrir les nouveautés de X API v2. Ces endpoints ont été mis à jour pour inclure les métadonnées de modification des Publications. Pour en savoir plus sur ces métadonnées, consultez la page de principes fondamentaux “Modifier des Publications”.
Overview
Enterprise
Les API Enterprise sont disponibles uniquement dans le cadre de nos niveaux d’accès gérés. Pour utiliser ces API, vous devez d’abord créer un compte avec notre équipe commerciale Enterprise. Pour en savoir plus, consultez ICI.
Vous pouvez consulter l’ensemble des offres de recherche de Publications de X API ICI.
Il existe deux API de recherche Enterprise :
- L’API 30-Day Search fournit des données des 30 derniers jours.
- L’API Full-Archive Search fournit un accès complet et instantané à l’intégralité du corpus de données X, remontant jusqu’à la première Publication en mars 2006.
Types de requêtes
Requêtes de recherche (données)
Requêtes de comptage (nombre de Publications)
Opérateurs disponibles
| Correspondance sur le contenu des Publications : | Correspondance sur les comptes d’intérêt : | Attributs de la Publication : | Opérateurs géospatiaux : |
| * keyword * “quoted phrase” * “keyword1 keyword2”~N * # * @ * $ * url: * lang: | * from: * to: * retweets_of: | * is:retweet * has:mentions * has:hashtags * has:media * has:videos * has:images * has:links * has:symbols * is:verified * -is:nullcast (opérateur de négation uniquement) | * bounding_box:[west_long south_lat east_long north_lat] * point_radius:[lon lat radius] * has:geo * place: * place_country: * has:profile_geo * profile_country: * profile_region: * profile_locality: |
Disponibilité des données / dates importantes
- Première Publication : 21/03/2006
- Premiers retweets natifs : 06/11/2009
- Première Publication géolocalisée : 19/11/2009
- Première indexation d’URL pour le filtrage : 27/08/2011
- Métadonnées améliorées d’expansion d’URL (titres et descriptions de sites web) : 01/12/2014
- Métadonnées d’enrichissement Profile Geo et filtrage : 17/02/2015
Mises à jour des données et mutabilité
- Métadonnées de l’objet utilisateur :
- @handle de l’utilisateur (l’id numérique ne change jamais)
- Description de la biographie
- Compteurs : statuts, abonnés, abonnements, favoris, listes
- Localisation du profil
- Autres détails tels que le fuseau horaire et la langue
- Statistiques de la Publication – c’est‑à‑dire tout ce qui peut être modifié sur la plateforme par des actions d’utilisateurs (exemples ci‑dessous) :
- Nombre de favoris
- Nombre de Retweets
Requêtes mono‑thread vs multi‑thread
maxResults de 500) pour recevoir toutes les données. En supposant qu’il faille deux secondes par réponse, cela représente 4 000 secondes (un peu plus d’une heure) pour extraire toutes ces données de manière séquentielle via un seul thread (1 requête par seconde en utilisant le jeton « next » de la réponse précédente). Pas mal !
Considérons maintenant la situation où douze threads parallèles sont utilisés pour recevoir les données. En supposant une répartition homogène du million de Publications sur la période d’un an, vous pouvez répartir les requêtes entre douze threads parallèles (multi‑thread) et utiliser davantage de la limite de débit par seconde pour une seule « tâche ». En d’autres termes, vous pourriez exécuter un thread par mois qui vous intéresse et, ce faisant, les données pourraient être récupérées 12 fois plus vite (soit ~6 minutes).
Cet exemple multi‑thread s’applique tout aussi bien à l’endpoint counts. Par exemple, si vous souhaitez recevoir les comptages de Publications sur une période de deux ans, vous pouvez effectuer une requête mono‑thread et remonter dans les comptages par tranches de 31 jours. En supposant qu’il faille 2 secondes par réponse, il faudrait environ 48 secondes pour effectuer les 24 requêtes d’API et récupérer l’ensemble des comptages. Cependant, vous avez aussi la possibilité d’effectuer plusieurs requêtes d’un mois en parallèle. En effectuant 12 requêtes par seconde, l’ensemble des comptages pourrait être récupéré en environ 2 secondes.
Logique de nouvelle tentative
- Réessayez la requête après avoir réduit l’intervalle de temps qu’elle couvre. Répétez cette opération en réduisant progressivement jusqu’à une fenêtre de 6 heures si nécessaire.
- Si vous reliez un grand nombre de termes avec l’opérateur OR, divisez-les en règles distinctes et réessayez chacune individuellement.
- Si vous utilisez un grand nombre d’exclusions dans votre règle, réduisez le nombre de termes exclus dans la règle, puis réessayez.
Démarrage rapide
Prise en main de l’API Enterprise Search Posts : 30-Day
- [Un compte Enterprise]https://developer.x.com/en/products/x-api/enterprise
- Votre nom d’utilisateur, mot de passe et nom de compte
- Le label associé à votre endpoint de recherche, tel qu’affiché sur console.gnip.com
Accéder à l’endpoint de données
from: et lang: pour trouver des Publications provenant de @XDevelopers en anglais. Pour plus d’opérateurs cliquez ici.
- cURL
- Exemple cURL
-
Nom d’utilisateur
<USERNAME>par exempleemail@domain.com -
Nom de compte
<ACCOUNT-NAME>par exemplejohn-doe -
Label
<LABEL>par exempleprod -
fromDate et toDate par exemple
"fromDate":"201811010000", "toDate":"201811122359"
Corps de la réponse de l’endpoint de données
Le corps de la réponse renvoyée par votre requête d’API sera au format JSON, comme illustré ci-dessous.Accéder à l’endpoint counts
counts, nous allons récupérer le nombre de Publications provenant du compte @XDevelopers en anglais, regroupé par day.
- cURL
- Exemple cURL
-
Username
<USERNAME>par exempleemail@domain.com -
Account name
<ACCOUNT-NAME>par exemplejohn-doe -
Label
<LABEL>par exempleprod -
fromDate et toDate par exemple
"fromDate":"201811010000", "toDate":"201811122359"
Charge utile de la réponse de l’endpoint Counts
Articles de référence
Premiers pas avec l’API Enterprise Search Posts : Full-Archive
- [Un compte Enterprise]https://developer.x.com/en/products/x-api/enterprise
- Votre nom d’utilisateur, votre mot de passe et le nom de votre compte
- Le libellé associé à votre point de terminaison de recherche, tel qu’affiché sur console.gnip.com
Accéder au endpoint de données
Le endpoint de données nous fournira le payload complet des Publications correspondantes. Nous utiliserons les opérateursfrom: et lang: pour trouver les Publications provenant de @XDevelopers en anglais. Pour plus d’opérateurs, cliquez ici.
- cURL
- Exemple cURL
-
Nom d’utilisateur
<USERNAME>par ex.email@domain.com -
Nom du compte
<ACCOUNT-NAME>par ex.john-doe -
Label
<LABEL>par ex.prod -
fromDate et toDate par ex.
"fromDate":"201802010000", "toDate":"201802282359"
Corps de la réponse de l’endpoint de données
Accéder à l’endpoint counts
Avec l’endpoint counts, nous allons récupérer le nombre de Publications provenant du compte @XDevelopers en anglais, regroupées parday.
- cURL
- Exemple de cURL
-
Username
<USERNAME>par exemple :email@domain.com -
Account name
<ACCOUNT-NAME>par exemple :john-doe -
Label
<LABEL>par exemple :prod -
fromDate et toDate par exemple :
"fromDate":"201802010000", "toDate":"201802282359"
Corps de la réponse de l’endpoint Counts
Le corps de la réponse renvoyée par votre requête API sera au format JSON, comme illustré ci‑dessous.Articles de référence
Guides
Créer des requêtes de recherche
Opérateurs Enterprise
- API de recherche Enterprise sur les 30 derniers jours
- API de recherche Enterprise sur l’archive complète
| Opérateur | Description |
|---|---|
| mot-clé | Fait correspondre un mot-clé tokenisé dans le corps ou les URL d’une Publication. Il s’agit d’une correspondance tokenisée, ce qui signifie que votre chaîne de mots-clés sera comparée au texte tokenisé du corps de la Publication – la tokenisation est basée sur la ponctuation, les symboles et les caractères séparateurs du plan multilingue de base (BMP) d’Unicode. Par exemple, une Publication contenant le texte « I like coca-cola » serait découpée en jetons comme suit : I, like, coca, cola. Ces jetons seraient ensuite comparés à la chaîne de mots-clés utilisée dans votre règle. Pour faire correspondre des chaînes contenant des signes de ponctuation (par exemple, coca-cola), des symboles ou des caractères séparateurs, vous devez utiliser une correspondance exacte entre guillemets, comme décrit ci-dessous. Remarque : Avec l’API Search, les caractères accentués et spéciaux sont normalisés en caractères latins standards, ce qui peut modifier le sens dans les langues étrangères ou renvoyer des résultats inattendus : Par exemple, “músic” correspondra à « music » et inversement. Par exemple, des expressions courantes comme “Feliz Año Nuevo!” en espagnol seront indexées comme “Feliz Ano Nuevo”, ce qui change le sens de l’expression. Remarque : Cet opérateur fera correspondre à la fois les URL et les URL développées (unwound) dans une Publication. |
| emoji | Correspond à un emoji dans le corps d’une Publication. Les emojis sont une correspondance « tokenisée », ce qui signifie que votre emoji sera comparé au texte tokenisé du corps de la Publication – la tokenisation est basée sur les caractères de ponctuation, de symbole/emoji et de séparateur du plan de base Unicode. Par exemple, une Publication contenant le texte « I like » serait décomposée en jetons comme suit : I, like, . Ces jetons seraient ensuite comparés à l’emoji utilisé dans votre règle. Notez que si un emoji possède une variante, vous devez utiliser des guillemets pour l’ajouter à une règle. |
| ”correspondance exacte de l’expression” | Fait correspondre l’expression tokenisée et ordonnée au sein du corps ou des URL d’une Publication. Il s’agit d’une correspondance tokenisée, ce qui signifie que votre chaîne de mots-clés sera comparée au texte tokenisé du corps de la Publication – la tokenisation est basée sur les signes de ponctuation, les symboles et les caractères séparateurs du plan de base Unicode. Remarque : la ponctuation n’est pas tokenisée et est plutôt traitée comme un espace. Par exemple, l’expression entre guillemets « #hashtag » fera correspondre « hashtag » mais pas #hashtag (utilisez l’opérateur de hashtag # sans guillemets pour faire correspondre de vrais hashtags. Par exemple, l’expression entre guillemets « cashtag (utilisez l’opérateur de cashtag $ sans guillemets pour faire correspondre de vrais cashtags. Par exemple, “Love Snow” fera correspondre “#love #snow” Par exemple, “#Love #Snow” fera correspondre “love snow” Remarque : cet opérateur fera correspondre à la fois les URL et les URL développées au sein d’une Publication. |
| ”keyword1 keyword2”~N | Souvent appelé opérateur de proximité, il correspond à une Publication où les mots-clés sont séparés d’au plus N tokens. Si les mots-clés apparaissent dans l’ordre inverse, ils ne peuvent pas être séparés de plus de N-2 tokens. Cet opérateur peut contenir n’importe quel nombre de mots-clés entre guillemets. N ne peut pas être supérieur à 6. Notez que cet opérateur est uniquement disponible dans les API de recherche enterprise. |
| from: | Correspond à toute Publication provenant d’un utilisateur spécifique. La valeur doit être l’identifiant numérique de compte X de l’utilisateur ou son nom d’utilisateur (sans le caractère @). Consultez ICI ou ICI pour des méthodes permettant de rechercher des identifiants numériques de compte X. |
| to: | Fait correspondre toute Publication en réponse à un utilisateur donné. La valeur doit être l’identifiant numérique du compte de l’utilisateur ou son nom d’utilisateur (sans le caractère @). Voir ICI pour connaître les méthodes permettant de rechercher les identifiants numériques de comptes X. |
| url: | Effectue une mise en correspondance tokenisée (mot-clé/phrase) sur les URL développées d’une Publication (similaire à url_contains). Les jetons et expressions contenant de la ponctuation ou des caractères spéciaux doivent être entourés de guillemets doubles. Par exemple, url:“/developer”. Bien que cela ne soit généralement pas recommandé, si vous souhaitez faire correspondre un protocole spécifique, mettez-le entre guillemets doubles : url:“https://developer.x.com”. Remarque : Lorsque vous utilisez PowerTrack ou Historical PowerTrack, cet opérateur fera correspondre les URL contenues dans la Publication originale d’une Publication citée (Quote Tweet). Par exemple, si votre règle inclut url:“developer.x.com” et qu’une Publication contient cette URL, tous les Quote Tweets de cette Publication seront inclus dans les résultats. Ce n’est pas le cas lorsque vous utilisez la Search API. |
| # | Fait correspondre toute Publication avec le hashtag indiqué. Cet opérateur effectue une correspondance exacte, PAS une correspondance tokenisée, ce qui signifie que la règle « 2016 » correspondra aux Publications avec le hashtag exact « 2016 », mais pas à celles avec le hashtag « 2016election ». Remarque : l’opérateur de hashtag s’appuie sur l’extraction d’entités de X pour faire correspondre les hashtags, plutôt que d’extraire le hashtag directement du corps du message. Voir ICI pour plus d’informations sur les attributs JSON des entités X. |
| @ | Correspond à toute Publication qui mentionne le nom d’utilisateur indiqué. L’opérateur to: renvoie un sous-ensemble des correspondances de l’opérateur @mention. |
| $ | Identifie toute Publication qui contient le « cashtag » spécifié (où le premier caractère du jeton est le caractère « $ »). Notez que l’opérateur de cashtag s’appuie sur l’extraction d’entités « symbols » de X pour faire correspondre les cashtags, plutôt que d’essayer d’extraire le cashtag directement du texte de la Publication elle‑même. Voir ICI pour plus d’informations sur les attributs JSON des entités X. Notez que cet opérateur n’est disponible que dans les API de recherche enterprise. |
| retweets_of: | Alias disponible : retweets_of_user: Correspond aux Publications qui sont des retweets d’un utilisateur donné. Accepte aussi bien les noms d’utilisateur que les identifiants numériques de compte X (et non les identifiants de statut de Publication). Voir ICI pour connaître les méthodes permettant de rechercher des identifiants numériques de compte X. |
| lang: | Fait correspondre les Publications qui ont été classées par X comme étant d’une langue particulière (si, et seulement si, la Publication a été classée). Il est important de noter que chaque Publication n’est actuellement classée que dans une seule langue, donc la combinaison logique (AND) de plusieurs langues ne renverra aucun résultat. Remarque : si aucune classification linguistique ne peut être effectuée, le résultat fourni est « und » (pour indéfini). La liste ci-dessous représente les langues actuellement prises en charge et leur identifiant de langue BCP 47 correspondant : |
| Amharique : am | Allemand : de | Malayalam : ml | Slovaque : sk |
| Arabe : ar | Grec : el | Maldivien : dv | Slovène : sl |
| Arménien : hy | Gujarati : gu | Marathi : mr | Kurde sorani : ckb |
| Basque : eu | Créole haïtien : ht | Népalais : ne | Espagnol : es |
| Bengali : bn | Hébreu : iw | Norvégien : no | Suédois : sv |
| Bosniaque : bs | Hindi : hi | Oriya : or | Tagalog : tl |
| Bulgare : bg | Hindi latinisé : hi-Latn | Pendjabi : pa | Tamoul : ta |
| Birman : my | Hongrois : hu | Pachto : ps | Télougou : te |
| Croate : hr | Islandais : is | Persan : fa | Thaï : th |
| Catalan : ca | Indonésien : in | Polonais : pl | Tibétain : bo |
| Tchèque : cs | Italien : it | Portugais : pt | Chinois traditionnel : zh-TW |
| Danois : da | Japonais : ja | Roumain : ro | Turc : tr |
| Néerlandais : nl | Kannada : kn | Russe : ru | Ukrainien : uk |
| Anglais : en | Khmer : km | Serbe : sr | Ourdou : ur |
| Estonien : et | Coréen : ko | Chinois simplifié : zh-CN | Ouïgour : ug |
| Finnois : fi | Laotien : lo | Sindhi : sd | Vietnamien : vi |
| Français : fr | Letton : lv | Cingalais : si | Gallois : cy |
| Géorgien : ka | Lituanien : lt |
| place: | Fait correspondre les Publications étiquetées avec l’emplacement spécifié ou l’ID de lieu X correspondant (voir les exemples). Les noms de lieu composés de plusieurs mots (« New York City », « Palo Alto ») doivent être entourés de guillemets. Remarque : consultez le point de terminaison d’API publique GET geo/search pour savoir comment obtenir des IDs de lieu X. Remarque : cet opérateur ne fera pas correspondre les Retweets, car les lieux des Retweets sont rattachés à la Publication originale. Il ne fera pas non plus correspondre les lieux rattachés à la Publication originale d’un Quote Tweet. |
| place_country: | Fait correspondre les Publications dont le code pays associé à un place tagué correspond au code ISO alpha-2 à deux caractères fourni. Les codes ISO valides sont disponibles ici : http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 Remarque : cet opérateur ne fera pas correspondre les Retweets, car les lieux des Retweets sont rattachés à la Publication originale. Il ne fera pas non plus correspondre les lieux rattachés à la Publication originale d’un Quote Tweet. |
| point_radius:[lon lat radius] | Fait correspondre l’emplacement exact (x,y) de la Publication lorsqu’il est présent et, dans X, un polygone géographique « Place », lorsque l’objet « Place » est entièrement contenu dans la région définie. * Les unités de rayon prises en charge sont les miles (mi) et les kilomètres (km). * Le rayon doit être inférieur à 25 mi. * La longitude est dans l’intervalle ±180. * La latitude est dans l’intervalle ±90. * Toutes les coordonnées sont en degrés décimaux. * Les arguments de règle sont placés entre crochets et séparés par des espaces. Remarque : cet opérateur ne fera pas correspondre les Retweets, car les lieux des Retweets sont rattachés à la Publication originale. Il ne fera pas non plus correspondre les lieux rattachés à la Publication originale d’un Quote Tweet. |
| bounding_box:[west_long south_lat east_long north_lat] | Alias disponible : geo_bounding_box: Fait correspondre l’emplacement exact (long, lat) de la Publication lorsqu’il est présent et, dans X, un polygone géographique « Place », lorsque l’objet « Place » est entièrement contenu dans la région définie. * west_long et south_lat représentent le coin sud-ouest de la boîte englobante, où west_long est la longitude de ce point et south_lat est la latitude. * east_long et north_lat représentent le coin nord-est de la boîte englobante, où east_long est la longitude de ce point et north_lat est la latitude. * La largeur et la hauteur de la boîte englobante doivent être inférieures à 25 mi. * La longitude est dans l’intervalle ±180. * La latitude est dans l’intervalle ±90. * Toutes les coordonnées sont en degrés décimaux. * Les arguments de règle sont placés entre crochets et séparés par des espaces. Remarque : cet opérateur ne fera pas correspondre les Retweets, car les lieux des Retweets sont rattachés à la Publication originale. Il ne fera pas non plus correspondre les lieux rattachés à la Publication originale d’un Quote Tweet. |
| profile_country: | Correspondance exacte avec le champ « countryCode » de l’objet « address » dans l’enrichissement Profile Geo. Utilise un ensemble normalisé de codes pays à deux lettres, basé sur la spécification ISO-3166-1-alpha-2. Cet opérateur est fourni plutôt qu’un opérateur pour le champ « country » de l’objet « address » afin d’être plus concis. |
| profile_region: | Fait correspondre le champ « region » de l’objet « address » dans l’enrichissement Profile Geo. Il s’agit d’une correspondance exacte sur la chaîne complète. Il n’est pas nécessaire d’échapper des caractères avec une barre oblique inverse. Par exemple, pour faire correspondre quelque chose contenant une barre oblique, utilisez « one/two », et non « one/two ». Utilisez des guillemets doubles pour faire correspondre des sous-chaînes contenant des espaces ou de la ponctuation. |
| profile_locality: | Fait correspondre le champ « locality » de l’objet « address » dans l’enrichissement Profile Geo. Il s’agit d’une correspondance exacte sur la chaîne complète. Il n’est pas nécessaire d’échapper des caractères avec une barre oblique inverse. Par exemple, pour faire correspondre quelque chose contenant une barre oblique, utilisez « one/two », et non « one/two ». Utilisez des guillemets doubles pour faire correspondre des sous-chaînes contenant des espaces ou de la ponctuation. |
| has:geo | Sélectionne les Publications qui disposent de données de géolocalisation propres à la Publication, fournies par X. Il peut s’agir soit d’une coordonnée « geo » latitude/longitude, soit d’un « emplacement » sous la forme d’un X « Place », avec le nom d’affichage correspondant, le polygone géographique et d’autres champs. Remarque : Lors de l’utilisation de l’API Search, cet opérateur doit être utilisé conjointement avec d’autres opérateurs qui n’incluent pas is: ou has:. |
| has:profile_geo | Alias disponible : has:derived_user_geo Renvoie les Publications qui possèdent des métadonnées Profile Geo, quelle que soit leur valeur réelle. Remarque : Lors de l’utilisation de l’API Search, cet opérateur doit être utilisé conjointement avec d’autres opérateurs qui n’incluent pas is: ou has:. |
| has:links | Cet opérateur identifie les Publications qui contiennent des liens dans le corps du message. Remarque : lorsque vous utilisez l’API Search, cet opérateur doit être utilisé conjointement avec d’autres opérateurs qui n’incluent pas is: ou has:. |
| is:retweet | Ne renvoie que les Retweets explicites qui correspondent à une règle. Il peut également être utilisé en négation pour exclure de la diffusion les Retweets qui correspondent à une règle, de sorte que seul le contenu original soit renvoyé. Cet opérateur recherche uniquement les véritables Retweets, qui utilisent la fonctionnalité de retweet de X. Les Tweets cités et les Posts modifiés qui n’utilisent pas la fonctionnalité de retweet de X ne seront pas pris en compte par cet opérateur. Remarque : Lorsque vous utilisez l’API Search, cet opérateur doit être utilisé conjointement avec d’autres opérateurs qui n’incluent pas is: ou has:. |
| is:reply | Un opérateur permettant de filtrer les Publications selon qu’elles sont ou non des réponses à des Publications. Permet de renvoyer uniquement les réponses explicites qui correspondent à une règle. Peut également être utilisé avec une négation pour exclure de la livraison les réponses qui correspondent à une règle. Notez que cet opérateur est disponible pour la recherche premium payante et la recherche Enterprise, et n’est pas disponible dans les environnements de développement Sandbox. Remarque : lorsque vous utilisez la Search API, cet opérateur doit être utilisé conjointement avec d’autres opérateurs qui n’incluent pas is: ou has:. |
| is:quote | Renvoie uniquement les Quote Tweets, ou les Publications qui font référence à une autre Publication, identifiées par “is_quote_status”:true dans les payloads de Publication. Peut également être utilisé sous forme négative pour exclure les Quote Tweets. Remarque : Lorsque vous utilisez l’API Search, cet opérateur doit être utilisé conjointement avec d’autres opérateurs qui n’incluent pas is: ou has:. |
| is:verified | Renvoie uniquement les Publications dont l’auteur est « vérifié » par X. Peut également être utilisé sous forme négative pour exclure les Publications dont l’auteur est vérifié. Remarque : Lorsque vous utilisez l’API Search, cet opérateur doit être utilisé conjointement avec d’autres opérateurs qui n’incluent pas is: ou has:. |
| has:mentions | Renvoie les Publications qui mentionnent un autre utilisateur de X. Remarque : Lorsque vous utilisez la Search API, cet opérateur doit être utilisé conjointement avec d’autres opérateurs qui n’incluent pas is: ou has:. |
| has:hashtags | Fait correspondre les Publications contenant un hashtag. Remarque : Lorsque vous utilisez l’API Search, cet opérateur doit être utilisé conjointement avec d’autres opérateurs qui n’incluent pas is: ou has:. |
| has:media | Alias disponible : has:media_link Renvoie les Publications qui contiennent une URL de média telle que classée par X. Par exemple, pic.x.com. Remarque : lors de l’utilisation de l’API Search, cet opérateur doit être utilisé conjointement avec d’autres opérateurs qui n’incluent pas is: ou has:. |
| has:images | Renvoie les Publications qui contiennent une URL de média classée par X. Par exemple, pic.x.com. Remarque : lorsque vous utilisez la Search API, cet opérateur doit être utilisé conjointement avec d’autres opérateurs qui ne comportent pas is: ou has:. |
| has:videos | Alias disponible : has:video_link Identifie les Publications contenant des vidéos natives X, importées directement sur X. Il n’identifiera pas les vidéos créées avec Vine ou Periscope, ni les Publications contenant des liens vers d’autres sites d’hébergement de vidéos. Remarque : Lorsque vous utilisez l’API Search, cet opérateur doit être utilisé conjointement avec d’autres opérateurs qui n’incluent pas is: ou has:. |
| has:symbols | Renvoie les Publications qui contiennent un symbole de cashtag (avec le caractère « tag). Notez que cet opérateur est uniquement disponible dans les API de recherche enterprise. Remarque : Lors de l’utilisation de l’API Search, cet opérateur doit être utilisé conjointement avec d’autres opérateurs qui n’incluent pas is: ou has:. |
Présentation du produit
Chronologie des métadonnées
to: et in_reply_to_status_id:.
Les détails fournis ici ont été générés à l’aide de Full-Archive Search (résultant de centaines de recherches). Cette chronologie n’est ni complète ni parfaitement précise à 100 %. Si vous identifiez une autre « date de naissance» de filtrage/métadonnées fondamentale pour votre cas d’usage, veuillez nous en informer.
Notez que l’index de recherche sous-jacent peut être reconstruit. En conséquence, ces détails de chronologie sont susceptibles d’évoluer.
2006
- 26 mars -
lang:. Un exemple de métadonnées de Publication renseignées rétroactivement lors de la génération de l’index de recherche. - 13 juillet -
has:mentionscommence à être pris en compte. - 6 octobre -
has:symbols. Les slang). - 26 octobre -
has:linkscommence à être pris en compte. - 23 novembre -
has:hashtagscommence à être pris en compte.
2007
- 30 janvier - Première @reply de « première classe » (in_reply_to_user_id),
reply_to_status_id:commence à être mis en correspondance. - 23 août - Les hashtags apparaissent comme une convention courante pour organiser les sujets et les conversations. Première utilisation concrète une semaine plus tard.
2009
- 15 mai -
is:retweet. Notez que cet opérateur commence à faire correspondre des résultats avec la version « bêta » des Retweets officiels et son modèle « Via @ ». Pendant cette période bêta, le verbe associé à la Publication est « post » et la Publication originale n’est pas incluse dans la charge utile. - 13 août - La version finale des Retweets officiels est publiée avec le modèle « RT @ », le verbe étant « share », et l’attribut « retweet_status » contenant la Publication originale (ce qui double approximativement la taille de la charge utile JSON).
2010
- 6 mars - Les opérateurs géographiques
has:geo,bounding_box:etpoint_radius:commencent à renvoyer des résultats. - 28 août -
has:videos(Jusqu’en février 2015, cet opérateur renvoie les Publications contenant des liens vers certaines plateformes d’hébergement vidéo, comme youtube.com, vimeo.com et vivo.com).
2011
- 20 juillet -
has:mediaethas:imagescommencent à être pris en compte. Les photos natives sont officiellement annoncées le 9 août 2010.
2014
- 3 décembre - (environ) certaines métadonnées d’URL enrichies avec balises HTML
titleetdescriptioncommencent à apparaître dans les payloads. Les métadonnées enrichies ont été pleinement déployées en mai 2016.
2015
- 10 février -
has:videoscorrespond aux vidéos natives sur X. - 17 février -
has:profile_geo,profile_country:,profile_region:,profile_locality:les opérateurs Profile Geo commencent à produire des correspondances. - 17 février -
place_country:etplace:les opérateurs de géolocalisation des Publications commencent à produire des correspondances.
2016
- 1er mai - Les métadonnées d’URL améliorées sont devenues plus largement accessibles et ont été officiellement annoncées dans le cadre du lancement de Gnip 2.0 en août 2016. Aucun opérateur associé pour ces métadonnées dans les API de recherche.
2017
- 22 février - Les métadonnées des sondages deviennent disponibles au format natif enrichi. Aucun opérateur associé pour ces métadonnées.
2022
- 27 septembre - Tous les objets Publication créés à partir de cette date disposent de métadonnées d’édition de Publication. Tous les endpoints Enterprise qui fournissent des objets Publication ont été mis à jour pour fournir ces métadonnées à compter de cette date. Les métadonnées d’édition fournies incluent les objets
edit_historyetedit_controls. Ces métadonnées ne seront pas renvoyées pour les Publications créées avant le 27 septembre 2022. Actuellement, il n’existe aucun opérateur Enterprise disponible correspondant à ces métadonnées. Pour en savoir plus sur les métadonnées d’édition de Publication, consultez la page Principes de base de l’édition de Publications.
2022
- 29 septembre - Tous les objets de type Publication créés depuis cette date disposent de métadonnées de Publication modifiée. Tous les endpoints Enterprise qui renvoient des objets Publication ont été mis à jour pour fournir ces métadonnées à partir de cette date. Les métadonnées d’édition fournies incluent les objets
edit_historyetedit_controls. Ces métadonnées ne seront pas renvoyées pour les Publications créées avant le 27 septembre 2022. Actuellement, il n’existe aucun Operators Enterprise disponible correspondant à ces métadonnées. Pour en savoir plus sur les métadonnées de Publication modifiée, consultez la page Edit Posts fundamentals.
Conseils de filtrage
- Certaines métadonnées ont des dates d’« apparition » (born-on), de sorte que les filtres peuvent produire des faux négatifs. Ces recherches incluent des opérateurs qui dépendent de métadonnées qui n’existaient pas pendant tout ou partie de la période de recherche. Par exemple, si vous recherchez des Publications avec l’opérateur
has:images, vous n’obtiendrez aucune correspondance pour les périodes antérieures à juillet 2011. Cela vient du fait que cet opérateur ne correspond qu’aux photos natives (jointes à une Publication via l’interface utilisateur X). Pour un ensemble de données plus complet de Publications comportant un partage de photos, les filtres pour la période précédant juillet 2011 doivent contenir des clauses de règle qui correspondent aux URL courantes d’hébergement de photos. - Certaines métadonnées ont été complétées a posteriori avec des métadonnées issues d’une période postérieure à la publication sur X.
- Profils X
- Publications originales ou partagées
- Classification linguistique des Publications
- Géoréférencement des Publications
- Médias des liens partagés
Profils X
Publications originales et Retweets
_is:retweet_ permet aux utilisateurs d’inclure ou d’exclure les Retweets. Les utilisateurs de cet opérateur doivent adopter deux stratégies pour identifier (ou non) les Retweets dans les données antérieures à août 2009. Avant août 2009, le contenu de la Publication doit lui‑même être vérifié, à l’aide d’une recherche d’expression exacte, pour repérer le motif « @RT » (en fait, si vous filtrez les Retweets datant de la période mai‑août 2009, le motif « Via @ » doit être inclus). Pour les périodes postérieures à août 2009, l’opérateur is:retweet est disponible.
Classification linguistique des Publications
Géoréférencer des Publications
- Références géographiques dans le message de la Publication. La mise en correspondance sur la base de références géographiques présentes dans le message de la Publication, bien que souvent la méthode la plus difficile puisqu’elle dépend de connaissances locales, est une option pour l’ensemble de l’archive des Publications. Voici un exemple de correspondance géoréférencée de 2006 pour la région de San Francisco, basé sur un filtre « golden gate ».
-
Publications géolocalisées par l’utilisateur. Avec les API de recherche, la possibilité de commencer à mettre en correspondance des Publications à l’aide de certains Geo Operators a débuté en mars 2010, et avec d’autres en février 2015 :
- 6 mars 2010 :
has:geo,bounding_box:etpoint_radius: - 17 février 2015 :
place_country:etplace:
- 6 mars 2010 :
-
Emplacement « domicile » du profil de compte défini par l’utilisateur. Les Profile Geo Operators sont disponibles à la fois dans Historical PowerTrack et dans les API de recherche. Avec les API de recherche, ces métadonnées Profile Geo sont disponibles à partir de février 2015. Pour les Publications publiées avant que les métadonnées Profile Geo ne deviennent disponibles, l’opérateur
bio_location:est disponible et peut être utilisé pour faire correspondre des saisies d’utilisateurs non normalisées.
- 26 octobre 2006 -
has:links - 20 juillet 2011 -
has:imagesethas:media - août 2011 -
url:avec l’enrichissement des URL étendues Dès septembre 2006,(url:"spotify.com" OR url:gnip OR url:microsoft OR url:google OR url:youtube)correspond à http://x.com/Adam/statuses/16602, même s’il n’y a aucune métadonnée urls[] dans twitter_entities et les objets gnip. « youtube.com » est un exemple de contenu de message qui, sans aucune métadonnée urls[], correspond à url:youtube. - 10 février 2015 -
has:videospour les vidéos natives. Entre le 28/08/2010 et le 10/02/2015, cet opérateur correspond aux Publications contenant des liens vers certains sites d’hébergement vidéo tels que youtube.com, vimeo.com et vivo.com. - 1er mai 2016 -
url_title:eturl_description:, basés sur l’enrichissement des URL améliorées, généralement disponibles. Les premières métadonnées d’URL améliorées ont commencé à apparaître en décembre 2014.
Foire aux questions (FAQ)
Questions générales sur l’API de recherche de publications
Le nombre de Publications que je reçois via l'endpoint de données ne correspond pas au nombre de Publications indiqué par l'endpoint de comptage. Pourquoi est-ce le cas ?
Le nombre de Publications que je reçois via l'endpoint de données ne correspond pas au nombre de Publications indiqué par l'endpoint de comptage. Pourquoi est-ce le cas ?
Je n’ai reçu aucune Publication correspondant à ma requête. Pourquoi ?
Je n’ai reçu aucune Publication correspondant à ma requête. Pourquoi ?
- la Publication que vous vous attendiez à voir provient d’un compte protégé.
- le endpoint de données prend en compte tous les événements de conformité (ce qui signifie que les Publications supprimées, les zones géographiques nettoyées, etc. ne seront pas incluses dans la réponse).
Ma requête a renvoyé une Publication, mais elle inclut un mot-clé que j’ai exclu. Pourquoi cela se produit-il ?
Ma requête a renvoyé une Publication, mais elle inclut un mot-clé que j’ai exclu. Pourquoi cela se produit-il ?
Existe-t-il des bibliothèques clientes que je peux utiliser pour débuter avec les API Search Post ?
Existe-t-il des bibliothèques clientes que je peux utiliser pour débuter avec les API Search Post ?
- Tweepy - idéal pour utiliser le produit standard de recherche de Publications (Python)
- X API - idéal pour utiliser les API Search Post standard (Python)
- Search Posts Python et Search Posts Ruby - deux bons outils que vous pouvez utiliser avec les API Search Post Enterprise (et v2 !)
Est‑il possible que je reçoive un nombre de Publications inférieur à la valeur que j’ai définie comme `maxResults` dans ma requête vers l’endpoint de données ?
Est‑il possible que je reçoive un nombre de Publications inférieur à la valeur que j’ai définie comme `maxResults` dans ma requête vers l’endpoint de données ?
maxResults spécifiée ou après 30 jours.Par exemple, si vous avez 800 Publications au cours d’une période donnée de 30 jours, vous devrez effectuer deux requêtes pour récupérer l’ensemble des résultats, car le nombre maximal de Publications pouvant être renvoyées par requête est de 500 (maxResults). Et si vous avez seulement 400 Publications le premier mois, puis 100 Publications le deuxième mois, vous devrez également utiliser deux requêtes pour récupérer tous les résultats, car la pagination intervient après une période de 30 jours, même si la première requête renvoie moins de Publications que la valeur maxResults spécifiée.Dans quel ordre les Publications correspondantes sont-elles renvoyées ?
Dans quel ordre les Publications correspondantes sont-elles renvoyées ?
fromDate demandée initialement.En quoi les Publications modifiées ont-elles une incidence sur mon utilisation et ma facturation ?
En quoi les Publications modifiées ont-elles une incidence sur mon utilisation et ma facturation ?
EnterpriseJe souhaite en savoir plus sur la tarification de l’API Enterprise Search Post et sur la manière de déposer une demande pour en bénéficier. Comment puis-je procéder ?
Je souhaite en savoir plus sur la tarification de l’API Enterprise Search Post et sur la manière de déposer une demande pour en bénéficier. Comment puis-je procéder ?
Comment créer un ensemble de règles adapté à mon cas d’utilisation ?
Comment créer un ensemble de règles adapté à mon cas d’utilisation ?
J’ai dépassé mon quota de requêtes pour ce mois-ci, mais j’ai besoin d’accéder à plus de données — que puis-je faire ?
J’ai dépassé mon quota de requêtes pour ce mois-ci, mais j’ai besoin d’accéder à plus de données — que puis-je faire ?
Guide de dépannage des erreurs
- Assurez-vous d’utiliser les paramètres appropriés pour chaque endpoint (par exemple, le champ
bucketsne peut être utilisé qu’avec l’endpoint de comptage, pas avec l’endpoint de données). - Vérifiez que les champs
:product,:account_nameet:labelsont corrects. Vous trouverez votre champ:labeldans la console GNIP (clients entreprise uniquement).
Référence de l’API
API de recherche Enterprise
- 30-Day Search API - fournit les Tweets publiés au cours des 30 derniers jours.
- Full-Archive Search API - fournit les Tweets remontant jusqu’à 2006, en commençant par le premier Tweet publié en mars 2006.
- Méthodes pour récupérer les données de Tweets et les décomptes
- Authentification
- Pagination
- Paramètres de requête API et exemples de requêtes
- Corps JSON des réponses API et exemples de réponses
- Codes de réponse HTTP
Méthodes
https://gnip-api.x.com/search/.
| Méthode | Description |
|---|---|
| POST /search/:product/accounts/:account_name/:label | Récupérer les Tweets des 30 derniers jours qui correspondent à la règle PowerTrack spécifiée. |
| POST /search/:product/accounts/:account_name/:label/counts | Récupérer le nombre de Tweets des 30 derniers jours qui correspondent à la règle PowerTrack spécifiée. |
:productindique l’endpoint de recherche auquel vous envoyez des requêtes, soit30day, soitfullarchive.:account_nameest le nom (sensible à la casse) associé à votre compte, tel qu’affiché sur console.gnip.com.:labelest le libellé (sensible à la casse) associé à votre endpoint de recherche, tel qu’affiché sur console.gnip.com.
- Endpoint de données : https://gnip-api.x.com/search/30day/accounts/TwitterDev/prod.json
- Endpoint de décompte : https://gnip-api.x.com/search/30day/accounts/TwitterDev/prod/counts.json
:product, :account_name et :label. Pour utiliser ces exemples, veillez à mettre à jour les URL avec vos propres informations.
Authentification
Comportement des requêtes/réponses
fromDate et toDate, vous pouvez demander n’importe quelle période prise en charge par l’API. L’API de recherche sur 30 jours fournit des Tweets provenant des 31 derniers jours (même si elle est appelée API « 30-Day », elle met 31 jours à disposition pour permettre aux utilisateurs d’effectuer des requêtes couvrant des mois complets). L’API de recherche Full-Archive fournit des Tweets remontant jusqu’au tout premier Tweet (21 mars 2006). Cependant, une seule réponse sera limitée à la plus petite valeur entre votre paramètre maxResults et 31 jours. Si les données correspondant à votre requête ou votre plage temporelle dépassent la valeur maxResults que vous avez spécifiée ou 31 jours, vous recevrez un jeton next que vous devrez utiliser pour paginer le reste de la plage temporelle que vous avez spécifiée.
Par exemple, imaginons que vous utilisiez la recherche Full-Archive et que vous souhaitiez tous les Tweets correspondant à votre requête entre le 1er janvier 2017 et le 30 juin 2017. Vous indiquerez cette période complète de six mois dans votre requête en utilisant les paramètres fromDate et toDate. L’API de recherche répondra avec la première « page » de Tweets, avec un nombre de Tweets correspondant à votre paramètre maxResults (dont la valeur par défaut est 100). En supposant qu’il y ait davantage de Tweets (et il y en aura très probablement plus), l’API fournira également un jeton next qui vous permettra d’effectuer une requête pour la « page » suivante de données. Ce processus est répété jusqu’à ce que l’API ne renvoie plus de jeton next. Consultez la section suivante pour plus de détails.
Pagination
Pagination des données
maxResults a pour valeur par défaut 100 et peut être défini dans une plage de 10 à 500. Si votre requête renvoie plus de Tweets que la valeur du paramètre ‘maxResults’ utilisée dans la requête, la réponse inclura un jeton ‘next’ (en tant qu’attribut JSON au niveau racine). Ce jeton ‘next’ est utilisé dans la requête suivante pour récupérer la portion suivante des Tweets correspondants pour cette requête (c.-à-d. la ‘page’ suivante). Des jetons ‘next’ continueront d’être fournis jusqu’à ce que vous ayez atteint la dernière ‘page’ de résultats pour cette requête, moment auquel aucun jeton ‘next’ n’est fourni.
Pour demander la ‘page’ suivante de données, vous devez effectuer exactement la même requête que l’originale, y compris les paramètres query, toDate et fromDate, s’ils sont utilisés, et inclure également un paramètre de requête ‘next’ défini sur la valeur de la réponse précédente. Vous pouvez faire cela avec une requête GET ou POST. Toutefois, le paramètre ‘next’ doit être encodé dans l’URL dans le cas d’une requête GET.
Vous pouvez continuer à transmettre l’élément ‘next’ de votre requête précédente jusqu’à ce que vous ayez reçu tous les Tweets de la période couverte par votre requête. Lorsque vous recevez une réponse qui n’inclut pas d’élément ‘next’, cela signifie que vous avez atteint la dernière page et qu’aucune donnée supplémentaire n’est disponible pour la requête et la plage temporelle spécifiées.
Pagination des counts
counts fournit les volumes de Tweets associés à une requête, sur une base quotidienne, horaire ou par minute. L’endpoint d’API counts renverra un tableau horodaté de dénombrements couvrant au maximum 31 jours. Si vous demandez plus de 31 jours de dénombrements, un jeton next vous sera fourni. Comme pour les jetons next de données, vous devez effectuer exactement la même requête que l’originale et inclure également un paramètre de requête next défini sur la valeur renvoyée dans la réponse précédente.
Au-delà d’une demande portant sur plus de 31 jours de dénombrements, il existe un autre cas où un jeton next est fourni. Pour les requêtes à volume élevé, il est possible que la génération des dénombrements prenne suffisamment de temps pour déclencher un dépassement de délai de réponse. Lorsque cela se produit, vous recevrez moins de 31 jours de dénombrements, mais un jeton next vous sera fourni afin de continuer à effectuer des requêtes pour obtenir l’intégralité du jeu de dénombrements. Important : les dépassements de délai ne renvoient que des « buckets » complets : ainsi, 2,5 jours se traduiraient par 2 « buckets » de journées complètes.
Notes supplémentaires
- Lorsque vous utilisez les paramètres fromDate ou toDate dans une requête de recherche, vous n’obtenez que des résultats compris dans votre plage temporelle. Lorsque vous atteignez le dernier groupe de résultats de votre plage temporelle, vous ne recevrez plus de jeton ‘next’.
- L’élément ‘next’ peut être utilisé avec n’importe quelle valeur de maxResults entre 10 et 500 (avec une valeur par défaut de 100). maxResults détermine combien de Tweets sont renvoyés dans chaque réponse, mais ne vous empêche pas d’obtenir finalement l’ensemble des résultats.
- L’élément ‘next’ n’expire pas. Plusieurs requêtes utilisant la même valeur ‘next’ recevront les mêmes résultats, quel que soit le moment où la requête est effectuée.
- Lorsque vous parcourez les résultats à l’aide du paramètre ‘next’, vous pouvez rencontrer des doublons aux limites de la requête. Votre application doit être capable de les gérer.
Point de terminaison des données
POST /search/:product/:label
Modèle de point de terminaison :
Paramètres de requête de données
| Paramètres | Description | Obligatoire | Valeur d’exemple |
|---|---|---|---|
| query | L’équivalent d’une règle PowerTrack, avec jusqu’à 2 048 caractères (sans limite sur le nombre de clauses positives et négatives). Ce paramètre doit inclure TOUTES les parties de la règle PowerTrack, y compris tous les opérateurs, et les différentes parties de la règle ne doivent pas être réparties dans d’autres paramètres de la requête. Remarque : tous les opérateurs PowerTrack ne sont pas pris en charge. Les opérateurs pris en charge sont énumérés ICI. | Oui | (snow OR cold OR blizzard) weather |
| tag | Les tags peuvent être utilisés pour segmenter les règles et leurs données correspondantes en différents groupes logiques. Si un tag de règle est fourni, ce tag est inclus dans l’attribut ‘matching_rules’. Il est recommandé d’attribuer des UUID spécifiques aux règles comme tags de règle et de gérer les correspondances souhaitées côté client. | Non | 8HYG54ZGTU |
| fromDate | L’horodatage UTC le plus ancien (jusqu’au 21/03/2006 avec la recherche Full-Archive) à partir duquel les Tweets seront fournis. L’horodatage a une granularité à la minute et est inclusif (c’est‑à‑dire que 12:00 inclut la minute 00). Spécifié : utiliser uniquement fromDate sans paramètre toDate renverra les résultats pour la requête en remontant dans le temps à partir de maintenant( ) jusqu’à fromDate. Non spécifié : si fromDate n’est pas spécifié, l’API renverra tous les résultats pour les 30 derniers jours avant maintenant( ) ou avant toDate (s’il est spécifié). Si ni le paramètre fromDate ni le paramètre toDate ne sont utilisés, l’API renverra tous les résultats pour les 30 derniers jours, à partir du moment de la requête, en remontant dans le temps. | Non | 201207220000 |
| toDate | L’horodatage UTC le plus récent jusqu’auquel les Tweets seront fournis. L’horodatage a une granularité à la minute et n’est pas inclusif (c’est‑à‑dire que 11:59 n’inclut pas la 59ᵉ minute de l’heure). Spécifié : utiliser uniquement toDate sans paramètre fromDate renverra les 30 derniers jours de données précédant toDate. Non spécifié : si toDate n’est pas spécifié, l’API renverra tous les résultats à partir de maintenant( ) pour la requête, en remontant dans le temps jusqu’à fromDate. Si ni le paramètre fromDate ni le paramètre toDate ne sont utilisés, l’API renverra tous les résultats pour l’ensemble de l’index sur 30 jours, à partir du moment de la requête, en remontant dans le temps. | Non | 201208220000 |
| maxResults | Le nombre maximal de résultats de recherche à renvoyer par une requête. Un nombre compris entre 10 et la limite du système (actuellement 500). Par défaut, la réponse à une requête renverra 100 résultats. | Non | 500 |
| next | Ce paramètre est utilisé pour obtenir la ‘page’ suivante de résultats comme décrit ICI. La valeur utilisée avec ce paramètre est directement extraite de la réponse fournie par l’API et ne doit pas être modifiée. | Non | NTcxODIyMDMyODMwMjU1MTA0 |
Détails supplémentaires
| Période disponible | 30 jours : les 31 derniers jours Archive complète : 21 mars 2006 - aujourd’hui |
| Format de requête | L’équivalent d’une règle PowerTrack, avec jusqu’à 2 048 caractères (et sans limite quant au nombre de clauses positives et négatives). Remarque : tous les opérateurs PowerTrack ne sont pas pris en charge. Consultez la page Opérateurs disponibles pour voir la liste des opérateurs pris en charge. |
| Limite de taux | Les partenaires seront soumis à des limites de taux avec une granularité à la fois à la minute et à la seconde. La limite de taux par minute varie selon le partenaire, comme spécifié dans votre contrat. Toutefois, ces limites de taux par minute ne sont pas conçues pour être consommées en un seul pic de trafic. Indépendamment de votre limite de taux par minute, tous les partenaires seront limités à un maximum de 20 requêtes par seconde, agrégées sur l’ensemble des requêtes de données et/ou de décomptes. |
| Conformité | Toutes les données livrées via la Full-Archive Search API sont conformes au moment de la livraison. |
| Disponibilité en temps réel | Les données sont disponibles dans l’index dans les 30 secondes suivant leur génération sur la plateforme X |
Exemples de requêtes de données et de réponses
Exemple de requête POST
- Les paramètres de requête dans une requête POST sont envoyés dans le corps de la requête, au format JSON, comme illustré ci-dessous.
- Toutes les parties de la règle PowerTrack faisant l’objet de la requête (par exemple des mots-clés, d’autres opérateurs comme bounding_box:) doivent être placées dans le paramètre ‘query’.
- Ne décomposez pas la règle en plusieurs paramètres distincts dans l’URL de requête.
Exemple de requête GET
- Les paramètres d’une requête GET sont encodés dans l’URL, au moyen de l’encodage standard des URL.
- Toutes les parties de la règle PowerTrack faisant l’objet de la requête (par exemple, les mots-clés, d’autres opérateurs comme bounding_box:) doivent être placées dans le paramètre ‘query’.
- Ne séparez pas des parties de la règle en paramètres distincts dans l’URL de requête.
Exemple de réponses de données
maxResults, de sorte qu’un jeton ‘next’ est fourni pour les requêtes suivantes. Si maxResults ou un nombre inférieur de Tweets sont associés à votre requête, aucun jeton ‘next’ ne sera inclus dans la réponse.
La valeur de l’élément ‘next’ changera à chaque requête et doit être traitée comme une chaîne opaque. L’élément ‘next’ apparaîtra comme suit dans le corps de la réponse :
Point de terminaison de décompte
/search/:stream/counts
Modèle d’endpoint :
/search/fullarchive/accounts/:account_name/:label/counts.json
Cet endpoint renvoie des données de comptage (volumes de données) pour la requête spécifiée. Si aucune période n’est indiquée, la plage temporelle par défaut est les 30 derniers jours. Les volumes de données sont renvoyés sous forme de tableau horodaté, soit par jour, par heure (par défaut) ou par minute.
Remarque : Cette fonctionnalité peut également être réalisée à l’aide d’une requête GET, au lieu d’une requête POST, en encodant dans l’URL les paramètres décrits ci‑dessous.
Paramètres de requête Counts
| Paramètres | Description | Obligatoire | Valeur d’exemple |
|---|---|---|---|
| query | L’équivalent d’une règle PowerTrack, avec jusqu’à 2 048 caractères (sans limite sur le nombre de clauses positives et négatives). Ce paramètre doit inclure TOUTES les parties de la règle PowerTrack, y compris tous les opérateurs ; aucune partie de la règle ne doit être séparée dans d’autres paramètres de la requête. Remarque : tous les opérateurs PowerTrack ne sont pas pris en charge. Consultez Opérateurs disponibles pour obtenir la liste des opérateurs pris en charge. | Oui | (snow OR cold OR blizzard) weather |
| fromDate | L’horodatage UTC le plus ancien (jusqu’au 21/03/2006) à partir duquel les Tweets seront fournis. L’horodatage est à la granularité de la minute et est inclusif (c.-à-d. 12:00 inclut la minute 00). Spécifié : en utilisant uniquement fromDate sans paramètre toDate, l’API fournit les données de counts (volumes de données) pour la requête en remontant dans le temps depuis maintenant jusqu’à fromDate. Si fromDate est antérieur de plus de 31 jours par rapport à maintenant, vous recevrez un next token pour paginer votre requête. Non spécifié : si aucun fromDate n’est spécifié, l’API fournit les counts (volumes de données) pour les 30 jours précédant maintenant ou toDate (s’il est spécifié). Si ni le paramètre fromDate ni le paramètre toDate ne sont utilisés, l’API fournit les counts (volumes de données) pour les 30 derniers jours, en partant du moment de la requête et en remontant dans le temps. | Non | 201207220000 |
| toDate | L’horodatage UTC le plus récent jusqu’auquel les Tweets seront fournis. L’horodatage est à la granularité de la minute et n’est pas inclusif (c.-à-d. 11:59 n’inclut pas la 59e minute de l’heure). Spécifié : en utilisant uniquement toDate sans paramètre fromDate, l’API fournit les counts (volumes de données) les plus récents pour les 30 jours précédant toDate. Non spécifié : si aucun toDate n’est spécifié, l’API fournit les counts (volumes de données) pour la requête en remontant dans le temps jusqu’à fromDate. Si fromDate est antérieur de plus de 31 jours par rapport à maintenant, vous recevrez un next token pour paginer votre requête. Si ni le paramètre fromDate ni le paramètre toDate ne sont utilisés, l’API fournit les counts (volumes de données) pour les 30 derniers jours, en partant du moment de la requête et en remontant dans le temps. | Non | 201208220000 |
| bucket | L’unité de temps pour laquelle les données de counts seront fournies. Les données de counts peuvent être renvoyées pour chaque jour, heure ou minute dans la période demandée. Par défaut, des counts horaires sont fournis. Options : day, hour, minute | Non | minute |
| next | Ce paramètre est utilisé pour obtenir la « page » suivante de résultats, comme décrit ici. La valeur utilisée avec le paramètre est directement extraite de la réponse fournie par l’API et ne doit pas être modifiée. | Non | NTcxODIyMDMyODMwMjU1MTA0 |
Détails supplémentaires
| Période disponible | 30-Day : 31 derniers jours Full-Archive : 21 mars 2006 - aujourd’hui |
| Format de requête | L’équivalent d’une règle PowerTrack, jusqu’à 2 048 caractères. Remarque : tous les opérateurs PowerTrack ne sont pas pris en charge. Consultez la page Opérateurs disponibles pour obtenir la liste des opérateurs pris en charge. |
| Limites de taux | Les partenaires seront soumis à des limites de taux, avec une granularité à la fois à la minute et à la seconde. La limite de taux par minute varie selon le partenaire, comme spécifié dans votre contrat. Cependant, ces limites de taux par minute ne sont pas destinées à être utilisées en une seule rafale de requêtes. Quelle que soit votre limite de taux par minute, tous les partenaires seront limités à un maximum de 20 requêtes par seconde, en cumulant l’ensemble des requêtes de données et/ou de décomptes. |
| Précision du décompte | Les décomptes fournis par cet endpoint reflètent le nombre de Tweets générés et ne tiennent pas compte des événements de conformité ultérieurs (suppressions, scrub geos). Certains Tweets comptabilisés peuvent ne pas être disponibles via l’endpoint de données en raison d’actions de conformité des utilisateurs. |
Exemples de requêtes et de réponses pour l’endpoint counts
Exemple de requête POST
- Les paramètres de requête dans une requête POST sont envoyés via un corps de requête au format JSON, comme illustré ci‑dessous.
- Toutes les parties de la règle PowerTrack que vous interrogez (par exemple, mots‑clés, autres opérateurs comme bounding_box:) doivent être placées dans le paramètre ‘query’.
- Ne découpez pas la règle en plusieurs paramètres distincts dans l’URL de requête.
Exemple de requête GET
- Les paramètres de requête dans une requête GET sont encodés dans l’URL à l’aide de l’encodage d’URL standard
- Toutes les parties de la règle PowerTrack faisant l’objet de la requête (par exemple des mots-clés, ou d’autres opérateurs comme bounding_box:) doivent être placées dans le paramètre ‘query’
- Ne séparez pas des parties de la règle pour en faire des paramètres distincts dans l’URL de requête
Exemples de réponses de comptage
Codes de réponse HTTP
| Status | Text | Description |
|---|---|---|
| 200 | OK | La requête a réussi. La réponse JSON sera similaire à ce qui suit : |
| 400 | Bad Request | En général, cette réponse est renvoyée en raison de la présence de JSON invalide dans la requête, ou lorsque la requête n’envoie aucune charge utile (payload) JSON. |
| 401 | Unauthorized | L’authentification HTTP a échoué en raison d’identifiants invalides. Connectez-vous à console.gnip.com avec vos identifiants pour vous assurer que vous les utilisez correctement dans votre requête. |
| 404 | Not Found | La ressource n’a pas été trouvée à l’URL à laquelle la requête a été envoyée, probablement parce qu’une URL incorrecte a été utilisée. |
| 422 | Unprocessable Entity | Ce code est renvoyé en raison de paramètres invalides dans la requête — par exemple, des règles PowerTrack invalides. |
| 429 | Unknown Code | Votre App a dépassé la limite de requêtes de connexion. Le message JSON correspondant sera similaire à ce qui suit : |
| 500 | Internal Server Error | Une erreur s’est produite côté serveur. Renvoyez votre requête en utilisant une stratégie de backoff exponentiel. |
| 502 | Proxy Error | Une erreur s’est produite côté serveur. Renvoyez votre requête en utilisant une stratégie de backoff exponentiel. |
| 503 | Service Unavailable | Une erreur s’est produite côté serveur. Renvoyez votre requête en utilisant une stratégie de backoff exponentiel. |
datasont disponibles icicountssont disponibles ici