Tenga en cuenta: Hemos publicado una nueva versión de search Posts y Post counts en X API v2. Le recomendamos revisar las novedades de X API v2. Estos endpoints se han actualizado para incluir metadatos de edición de Post. Obtenga más información sobre estos metadatos en la página de fundamentos “Edit Posts”.
Descripción general
Enterprise
Las APIs de Enterprise están disponibles únicamente dentro de nuestros niveles de acceso gestionados. Para usar estas APIs, primero debe configurar una cuenta con nuestro equipo de ventas de Enterprise. Para obtener más información, consulte AQUÍ.
Puede ver todas las ofertas de búsqueda de Posts de X API AQUÍ.
Existen dos APIs de búsqueda de Enterprise:
- La 30-Day Search API proporciona datos de los 30 días anteriores.
- La Full-Archive Search API proporciona acceso completo e instantáneo al corpus íntegro de datos de X que se remonta hasta el primer Post en marzo de 2006.
Tipos de solicitudes
Solicitudes de búsqueda (data)
Solicitudes de conteo (Post count)
Operadores disponibles
Coincidencia en el contenido de los Post: | Coincidencia en cuentas de interés: | Atributos de Post: | Operadores geoespaciales: |
* 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 (operador de negación únicamente) | * 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: |
Disponibilidad de datos / fechas importantes
- Primer Post: 21/3/2006
- Primeros Retweets nativos: 6/11/2009
- Primer Post con etiqueta geográfica: 19/11/2009
- URL indexadas por primera vez para filtrado: 27/8/2011
- Metadatos mejorados de expansión de URL (títulos y descripciones de sitios web): 1/12/2014
- Metadatos y filtrado de enriquecimiento de perfil geográfico: 17/2/2015
Actualizaciones de datos y mutabilidad
- Metadatos del objeto de usuario:
- @handle del usuario (el id numérico nunca cambia)
- Descripción de la biografía
- Recuentos: statuses, followers, friends, favorites, lists
- Ubicación del perfil
- Otros detalles como la zona horaria y el idioma
- Estadísticas del Post, es decir, cualquier elemento que pueda modificarse en la plataforma por acciones de los usuarios (ejemplos a continuación):
- Recuento de favorites
- Recuento de Retweet
Solicitudes de un solo subproceso vs. de múltiples subprocesos
Lógica de reintentos
- Vuelva a intentar la solicitud tras reducir el intervalo de tiempo que cubre. Repita esto hasta llegar a una ventana de 6 horas si no tiene éxito.
- Si está uniendo un gran número de términos con OR, divídalos en reglas separadas y vuelva a intentar cada una por separado.
- Si está utilizando un gran número de exclusiones en su regla, reduzca la cantidad de términos negados en la regla y vuelva a intentar.
Guía rápida
Introducción a la API enterprise Search Posts: 30-Day
- Una cuenta Enterprise: https://developer.x.com/en/products/x-api/enterprise
- Su nombre de usuario, contraseña y nombre de cuenta
- La label asociada con su endpoint de búsqueda, tal como se muestra en console.gnip.com
Acceso al endpoint de data
from:
y lang:
para encontrar Posts publicados por @XDevelopers en inglés. Para ver más operadores, haz clic aquí.
- cURL
- cURL example
-
Username
<USERNAME>
p. ej.,email@domain.com
-
Account name
<ACCOUNT-NAME>
p. ej.,john-doe
-
Label
<LABEL>
p. ej.,prod
-
fromDate y toDate p. ej.,
"fromDate":"201811010000", "toDate":"201811122359"
Carga útil de la respuesta del endpoint de datos
Acceso al endpoint de counts
day
.
- cURL
- cURL example
-
Nombre de usuario
<USERNAME>
, p. ej.,email@domain.com
-
Nombre de la cuenta
<ACCOUNT-NAME>
, p. ej.,john-doe
-
Etiqueta
<LABEL>
, p. ej.,prod
-
fromDate y toDate, p. ej.,
"fromDate":"201811010000", "toDate":"201811122359"
Carga útil de la respuesta del endpoint de conteos
Artículos de referencia
Introducción a enterprise Search Posts: Full-Archive API
- [Una cuenta enterprise]https://developer.x.com/en/products/x-api/enterprise
- Su nombre de usuario, contraseña y nombre de cuenta
- La etiqueta asociada con su endpoint de búsqueda, tal como se muestra en console.gnip.com
Acceder al endpoint de data
from:
y lang:
para encontrar Posts publicados por @XDevelopers en inglés. Para conocer más operadores, haz clic aquí.
- cURL
- cURL example
-
Username
<USERNAME>
p. ej.,email@domain.com
-
Account name
<ACCOUNT-NAME>
p. ej.,john-doe
-
Label
<LABEL>
p. ej.,prod
-
fromDate y toDate p. ej.,
"fromDate":"201802010000", "toDate":"201802282359"
Carga útil de la respuesta del endpoint de datos
Acceso al endpoint de counts
day
.
- cURL
- cURL example
-
Nombre de usuario
<USERNAME>
p. ej.,email@domain.com
-
Nombre de la cuenta
<ACCOUNT-NAME>
p. ej.,john-doe
-
Etiqueta
<LABEL>
p. ej.,prod
-
fromDate y toDate p. ej.,
"fromDate":"201802010000", "toDate":"201802282359"
Cuerpo de la respuesta del endpoint Counts
Artículos de referencia
Guías
Creación de consultas de búsqueda
Operadores de Enterprise
- API de búsqueda de 30 días de Enterprise
- API de búsqueda de archivo completo de Enterprise
Operador | Descripción |
---|---|
keyword | Busca una palabra clave tokenizada dentro del cuerpo o las URL de un Post. Esta es una búsqueda tokenizada, lo que significa que tu cadena de palabra clave se comparará con el texto tokenizado del cuerpo del Post: la tokenización se basa en signos de puntuación, símbolos y caracteres separadores del plano básico Unicode. Por ejemplo, un Post con el texto “I like coca-cola” se dividiría en los siguientes tokens: I, like, coca, cola. Estos tokens se compararían luego con la cadena de palabra clave utilizada en tu regla. Para buscar cadenas que contienen signos de puntuación (por ejemplo, coca-cola), símbolos o caracteres separadores, debes usar una búsqueda exacta entre comillas como se describe a continuación. Nota: Con la API de búsqueda, los caracteres acentuados y especiales se normalizan a caracteres latinos estándar, lo que puede cambiar significados en idiomas extranjeros o devolver resultados inesperados: Por ejemplo, “músic” coincidirá con “music” y viceversa. Por ejemplo, frases comunes como “Feliz Año Nuevo!” en español, se indexarían como “Feliz Ano Nuevo”, lo que cambia el significado de la frase. Nota: Este operador buscará tanto en las URL como en las URL expandidas dentro de un Post. |
emoji | Busca un emoji dentro del cuerpo de un Post. Los emojis son una búsqueda tokenizada, lo que significa que tu emoji se comparará con el texto tokenizado del cuerpo del Post: la tokenización se basa en signos de puntuación, símbolos/emojis y caracteres separadores del plano básico Unicode. Por ejemplo, un Post con el texto “I like ” se dividiría en los siguientes tokens: I, like, . Estos tokens se compararían luego con el emoji utilizado en tu regla. Ten en cuenta que si un emoji tiene una variante, debes usar “comillas” para agregarlo a una regla. |
”exact phrase match” | Busca la frase tokenizada y ordenada dentro del cuerpo o las URL de un Post. Esta es una búsqueda tokenizada, lo que significa que tu cadena de palabra clave se comparará con el texto tokenizado del cuerpo del Post: la tokenización se basa en signos de puntuación, símbolos y caracteres separadores del plano básico Unicode. Nota: Los signos de puntuación no se tokenizan y en su lugar se tratan como espacios en blanco. Por ejemplo, “#hashtag” entre comillas coincidirá con “hashtag” pero no con #hashtag (usa el operador hashtag # sin comillas para buscar hashtags reales). Por ejemplo, “cashtag" entre comillas coincidirá con "cashtag" pero no con cashtag (usa el operador cashtag $ sin comillas para buscar cashtags reales). Por ejemplo, “Love Snow” coincidirá con “#love #snow” Por ejemplo, “#Love #Snow” coincidirá con “love snow” Nota: Este operador buscará tanto en las URL como en las URL expandidas dentro de un Post. |
”keyword1 keyword2”~N | Comúnmente conocido como operador de proximidad, busca un Post donde las palabras clave no estén separadas por más de N tokens entre sí. Si las palabras clave están en orden inverso, no pueden estar separadas por más de N-2 tokens entre sí. Puede tener cualquier número de palabras clave entre comillas. N no puede ser mayor que 6. Ten en cuenta que este operador solo está disponible en las API de búsqueda enterprise . |
from: | Busca cualquier Post de un usuario específico. El valor debe ser el id numérico de cuenta de X del usuario o el nombre de usuario (excluyendo el carácter @). Consulta AQUÍ o AQUÍ para métodos de búsqueda de id numéricos de cuenta de X. |
to: | Busca cualquier Post que sea una respuesta a un usuario en particular. El valor debe ser el id numérico de cuenta del usuario o el nombre de usuario (excluyendo el carácter @). Consulta AQUÍ para métodos de búsqueda de id numéricos de cuenta de X. |
url: | Realiza una búsqueda tokenizada (palabra clave/frase) en las URL expandidas de un Post (similar a url_contains). Los tokens y frases que contienen signos de puntuación o caracteres especiales deben estar entre comillas dobles. Por ejemplo, url:“/developer”. Aunque generalmente no se recomienda, si quieres buscar un protocolo específico, enciérralo entre comillas dobles: url:“https://developer.x.com”. Nota: Al usar PowerTrack o Historical PowerTrack, este operador buscará en las URL contenidas dentro del Post original de un Quote Post. Por ejemplo, si tu regla incluye url:“developer.x.com”, y un Post contiene esa URL, cualquier Quote Tweet de ese Post se incluirá en los resultados. Este no es el caso al usar la API de búsqueda. |
# | Busca cualquier Post con el hashtag dado. Este operador realiza una búsqueda exacta, NO una búsqueda tokenizada, lo que significa que la regla “2016” coincidirá con Posts que tengan el hashtag exacto “2016”, pero no con aquellos que tengan el hashtag “2016election” Nota: el operador hashtag depende de la extracción de entidades de X para buscar hashtags, en lugar de extraer el hashtag del cuerpo mismo. Consulta AQUÍ para más información sobre los atributos JSON de entidades de X. |
@ | Busca cualquier Post que mencione el nombre de usuario dado. El operador to: devuelve un subconjunto de resultados del operador @mention. |
$ | Busca cualquier Post que contenga el ‘cashtag’ especificado (donde el carácter inicial del token es el carácter ’$’). Ten en cuenta que el operador cashtag depende de la extracción de entidades ‘symbols’ de X para buscar cashtags, en lugar de intentar extraer el cashtag del cuerpo mismo. Consulta AQUÍ para más información sobre los atributos JSON de entidades de X. Ten en cuenta que este operador solo está disponible en las API de búsqueda enterprise . |
retweets_of: | Alias disponible: retweets_of_user: Busca Posts que son Retweets de un usuario especificado. Acepta tanto nombres de usuario como id numéricos de cuenta de X (NO id de estado de Post). Consulta AQUÍ para métodos de búsqueda de id numéricos de cuenta de X. |
lang: | Busca Posts que han sido clasificados por X como de un idioma particular (si, y solo si, el Post ha sido clasificado). Es importante tener en cuenta que cada Post actualmente solo se clasifica como de un idioma, por lo que usar AND con múltiples idiomas no producirá resultados. Nota: si no se puede realizar una clasificación de idioma, el resultado proporcionado es ‘und’ (por indefinido). La lista a continuación representa los idiomas actualmente compatibles y su identificador de idioma BCP 47 correspondiente: |
Amhárico: am | Alemán: de | Malabar: ml | Eslovaco: sk |
Árabe: ar | Griego: el | Maldivo: dv | Esloveno: sl |
Armenio: hy | Guyaratí: gu | Maratí: mr | Kurdo soraní: ckb |
Vasco: eu | Criollo haitiano: ht | Nepalí: ne | Español: es |
Bengalí: bn | Hebreo: iw | Noruego: no | Sueco: sv |
Bosnio: bs | Hindi: hi | Oriya: or | Tagalo: tl |
Búlgaro: bg | Hindi romanizado: hi-Latn | Punyabí: pa | Tamil: ta |
Birmano: my | Húngaro: hu | Pastún: ps | Telugu: te |
Croata: hr | Islandés: is | Persa: fa | Tailandés: th |
Catalán: ca | Indonesio: in | Polaco: pl | Tibetano: bo |
Checo: cs | Italiano: it | Portugués: pt | Chino tradicional: zh-TW |
Danés: da | Japonés: ja | Rumano: ro | Turco: tr |
Neerlandés: nl | Canarés: kn | Ruso: ru | Ucraniano: uk |
Inglés: en | Jemer: km | Serbio: sr | Urdu: ur |
Estonio: et | Coreano: ko | Chino simplificado: zh-CN | Uigur: ug |
Finés: fi | Lao: lo | Sindhi: sd | Vietnamita: vi |
Francés: fr | Letón: lv | Cingalés: si | Galés: cy |
Georgiano: ka | Lituano: lt |
place: | Coincide con Posts etiquetados con la ubicación especificada o con el place ID de X (consulta los ejemplos). Los nombres de lugares con varias palabras (“New York City”, “Palo Alto”) deben ir entre comillas. Nota: Consulta el endpoint público de la API GET geo/search para saber cómo obtener place IDs de X. Nota: Este operador no coincidirá con Retweets, ya que los lugares de un Retweet están asociados al Post original. Tampoco coincidirá con los lugares asociados al Post original de un Quote Tweet. |
place_country: | Coincide con Posts donde el código de país asociado a un place etiquetado coincide con el código ISO alfa-2 proporcionado. Puedes encontrar códigos ISO válidos aquí: http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 Nota: Este operador no coincidirá con Retweets, ya que los lugares de un Retweet están asociados al Post original. Tampoco coincidirá con los lugares asociados al Post original de un Quote Tweet. |
point_radius:[lon lat radius] | Coincide con la ubicación exacta (x, y) del Post cuando está presente y, en X, con un polígono geográfico “Place”, cuando el Place está completamente contenido dentro de la región definida. * Las unidades de radio admitidas son millas (mi) y kilómetros (km). * El radio debe ser menor que 25 mi. * La longitud está en el rango de ±180. * La latitud está en el rango de ±90. * Todas las coordenadas están en grados decimales. * Los argumentos de la regla se incluyen entre corchetes, delimitados por espacios. Nota: Este operador no coincidirá con Retweets, ya que los lugares de un Retweet están asociados al Post original. Tampoco coincidirá con los lugares asociados al Post original de un Quote Tweet. |
bounding_box:[west_long south_lat east_long north_lat] | Alias disponible: geo_bounding_box: Coincide con la ubicación exacta (long, lat) del Post cuando está presente y, en X, con un polígono geográfico “Place”, cuando el Place está completamente contenido dentro de la región definida. * west_long y south_lat representan la esquina suroeste del rectángulo envolvente, donde west_long es la longitud de ese punto y south_lat es la latitud. * east_long y north_lat representan la esquina noreste del rectángulo envolvente, donde east_long es la longitud de ese punto y north_lat es la latitud. * El ancho y el alto del rectángulo envolvente deben ser menores que 25 mi. * La longitud está en el rango de ±180. * La latitud está en el rango de ±90. * Todas las coordenadas están en grados decimales. * Los argumentos de la regla se incluyen entre corchetes, delimitados por espacios. Nota: Este operador no coincidirá con Retweets, ya que los lugares de un Retweet están asociados al Post original. Tampoco coincidirá con los lugares asociados al Post original de un Quote Tweet. |
profile_country: | Coincidencia exacta con el campo “countryCode” del objeto “address” en el enriquecimiento de Profile Geo. Utiliza un conjunto normalizado de códigos de país de dos letras, basado en la especificación ISO-3166-1-alpha-2. Este operador se proporciona en lugar de uno para el campo “country” del objeto “address” para ser más concisos. |
profile_region: | Coincide con el campo “region” del objeto “address” en el enriquecimiento de Profile Geo. Es una coincidencia exacta de la cadena completa. No es necesario escapar caracteres con una barra invertida. Por ejemplo, si se busca una coincidencia con una barra, usa “one/two”, no “one/two”. Usa comillas dobles para hacer coincidir subcadenas que contengan espacios en blanco o signos de puntuación. |
profile_locality: | Coincide con el campo “locality” del objeto “address” en el enriquecimiento de Profile Geo. Es una coincidencia exacta de la cadena completa. No es necesario escapar caracteres con una barra invertida. Por ejemplo, si se busca una coincidencia con una barra, usa “one/two”, no “one/two”. Usa comillas dobles para hacer coincidir subcadenas que contengan espacios en blanco o signos de puntuación. |
has:geo | Coincide con Posts que tienen datos de geolocalización específicos del Post proporcionados por X. Esto puede ser coordenadas “geo” de latitud-longitud, o una “ubicación” en forma de un “Place” de X, con el nombre de visualización correspondiente, polígono geográfico y otros campos. Nota: Al usar la API de búsqueda, este operador debe usarse junto con otros operadores que no incluyan is: o has: . |
has:profile_geo | Alias disponible: has:derived_user_geo Coincide con Posts que tienen cualquier metadata de Profile Geo, independientemente del valor real. Nota: Al usar la API de búsqueda, este operador debe usarse junto con otros operadores que no incluyan is: o has: . |
has:links | Este operador coincide con Posts que contienen enlaces en el cuerpo del mensaje. Nota: Al usar la API de búsqueda, este operador debe usarse junto con otros operadores que no incluyan is: o has: . |
is:retweet | Entrega solo retweets explícitos que coincidan con una regla. También puede negarse para excluir retweets que coincidan con una regla de la entrega y solo se entrega contenido original. Este operador busca solo Retweets verdaderos, que usan la funcionalidad de retweet de X. Los Tweets citados y Posts modificados que no usan la funcionalidad de retweet de X no coincidirán con este operador. Nota: Al usar la API de búsqueda, este operador debe usarse junto con otros operadores que no incluyan is: o has: . |
is:reply | Un operador para filtrar Posts según si son o no respuestas a Posts. Entrega solo respuestas explícitas que coincidan con una regla. También puede negarse para excluir respuestas que coincidan con una regla de la entrega. Tenga en cuenta que este operador está disponible para búsqueda premium y Enterprise pagada y no está disponible en entornos de desarrollo Sandbox. Nota: Al usar la API de búsqueda, este operador debe usarse junto con otros operadores que no incluyan is: o has: . |
is:quote | Entrega solo Quote Tweets, o Posts que referencian otro Post, identificados por el “is_quote_status”:true en las cargas útiles de Post. También puede negarse para excluir Quote Tweets. Nota: Al usar la API de búsqueda, este operador debe usarse junto con otros operadores que no incluyan is: o has: . |
is:verified | Entrega solo Posts donde el autor está “verificado” por X. También puede negarse para excluir Posts donde el autor está verificado. Nota: Al usar la API de búsqueda, este operador debe usarse junto con otros operadores que no incluyan is: o has: . |
has:mentions | Coincide con Posts que mencionan a otro usuario de X. Nota: Al usar la API de búsqueda, este operador debe usarse junto con otros operadores que no incluyan is: o has: . |
has:hashtags | Coincide con Posts que contienen un hashtag. Nota: Al usar la API de búsqueda, este operador debe usarse junto con otros operadores que no incluyan is: o has: . |
has:media | Alias disponible: has:media_link Coincide con Posts que contienen una URL de medios clasificada por X. Por ejemplo, pic.x.com. Nota: Al usar la API de búsqueda, este operador debe usarse junto con otros operadores que no incluyan is: o has: . |
has:images | Coincide con Posts que contienen una URL de medios clasificada por X. Por ejemplo, pic.x.com. Nota: Al usar la API de búsqueda, este operador debe usarse junto con otros operadores que no incluyan is: o has: . |
has:videos | Alias disponible: has:video_link Coincide con Posts que contienen videos nativos de X, subidos directamente a X. Esto no coincidirá con videos creados con Vine, Periscope, o Posts con enlaces a otros sitios de alojamiento de videos. Nota: Al usar la API de búsqueda, este operador debe usarse junto con otros operadores que no incluyan is: o has: . |
has:symbols | Coincide con Posts que contienen un símbolo cashtag (con un carácter ‘' inicial. Por ejemplo, tag). Tenga en cuenta que este operador solo está disponible en las APIs de búsqueda Enterprise . Nota: Al usar la API de búsqueda, este operador debe usarse junto con otros operadores que no incluyan is: o has: . |
Descripción del producto
Cronologías de metadatos
to:
e in_reply_to_status_id:
.
Los detalles proporcionados aquí se generaron utilizando Full-Archive Search (resultado de cientos de búsquedas). Esta cronología no es 100% completa ni precisa. Si identifica otra “fecha de nacimiento” de filtrado/metadatos fundamental para su caso de uso, háganoslo saber.
Tenga en cuenta que el índice de búsqueda subyacente puede reconstruirse. En consecuencia, estos detalles de la cronología están sujetos a cambios.
2006
- 26 de marzo -
lang:
. Un ejemplo de metadatos de Post que se rellenan retrospectivamente mientras se genera el índice de búsqueda. - 13 de julio -
has:mentions
empieza a coincidir. - 6 de octubre -
has:symbols
. Los slang). - 26 de octubre -
has:links
empieza a coincidir. - 23 de noviembre -
has:hashtags
empieza a coincidir.
2007
- 30 de enero: Primera @reply de primera clase (in_reply_to_user_id);
reply_to_status_id:
comienza a coincidir. - 23 de agosto: Los hashtags surgen como una convención común para organizar temas y conversaciones. Primer uso real una semana después.
2009
- 15 de mayo -
is:retweet
. Tenga en cuenta que este Operador comienza a aplicarse con el lanzamiento “beta” de los Retweets oficiales y su patrón “Via @”. Durante este período beta, el verbo del Post es “post” y el Post original no se incluye en el payload. - 13 de agosto - Se lanza la versión final de los Retweets oficiales con el patrón “RT @”, un verbo establecido en “share” y el atributo “retweet_status” que contiene el Post original (lo que aproximadamente duplica el tamaño del payload JSON).
2010
- 6 de marzo: los operadores geográficos
has:geo
,bounding_box:
ypoint_radius:
comienzan a aplicar coincidencias. - 28 de agosto:
has:videos
(Hasta febrero de 2015, este operador coincide con Posts que contienen enlaces a sitios seleccionados de alojamiento de video como youtube.com, vimeo.com y vivo.com).
2011
- 20 de julio:
has:media
yhas:images
comienzan a hacer coincidencia. Las fotos nativas se anunciaron oficialmente el 9 de agosto de 2010.
2014
- 3 de diciembre - (Aproximadamente) Algunos Enhanced URL metadata con título y descripción HTML comienzan a incluirse en los payloads. Los metadatos mejorados se consolidaron más plenamente en mayo de 2016.
2015
- 10 de febrero:
has:videos
coincide con los videos “nativos” de X. - 17 de febrero:
has:profile_geo
,profile_country:
,profile_region:
,profile_locality:
Los operadores de Profile Geo comienzan a aplicar coincidencias. - 17 de febrero: Los operadores de geolocalización de Post
place_country:
yplace:
comienzan a aplicar coincidencias.
2016
- 1 de mayo: Metadatos de URL mejorados disponibles de forma más amplia, y anunciados oficialmente como parte del lanzamiento de Gnip 2.0 en agosto de 2016. No hay operadores asociados para estos metadatos en las APIs de búsqueda.
2017
- 22 de febrero: Los metadatos de las encuestas están disponibles en formato nativo enriquecido. No hay operadores asociados para estos metadatos.
2022
- 27 de septiembre: Todos los Objetos de Post creados desde esta fecha tienen disponible la metadatos de Post editado. Todos los endpoints de Enterprise que proporcionan Objetos de Post se actualizaron para ofrecer estos metadatos a partir de esta fecha. Los metadatos de edición proporcionados incluyen los objetos edit_history y edit_controls. Estos metadatos no se devolverán para Posts creados antes del 27 de septiembre de 2022. Actualmente, no hay Operadores de Enterprise disponibles que coincidan con estos metadatos. Para obtener más información sobre los metadatos de Edit Post, consulta la página Edit Posts fundamentals.
2022
- 29 de septiembre: todos los objetos de Post creados desde esta fecha tienen disponible los metadatos de Post editado. Todos los endpoints de Enterprise que proporcionan objetos de Post se actualizaron para ofrecer estos metadatos a partir de esta fecha. Los metadatos de edición proporcionados incluyen los objetos edit_history y edit_controls. Estos metadatos no se devolverán para Posts creados antes del 27 de septiembre de 2022. Actualmente, no hay Operadores de Enterprise disponibles que coincidan con estos metadatos. Para obtener más información sobre los metadatos de Edit Post, consulta la página Fundamentos de edición de Posts.
Consejos de filtrado
- Algunos metadatos tienen fechas de “origen”, por lo que los filtros pueden producir falsos negativos. Estas búsquedas incluyen operadores que dependen de metadatos que no existían durante todo o parte del período de búsqueda. Por ejemplo, si busca Posts con el operador
has:images
, no obtendrá coincidencias en períodos anteriores a julio de 2011. Esto se debe a que ese operador hace coincidir fotos nativas (adjuntas a un Post usando la interfaz de usuario de X). Para obtener un conjunto de datos más completo de Posts de compartición de fotos, los filtros anteriores a julio de 2011 deberían incluir cláusulas de regla que coincidan con URLs comunes de alojamiento de fotos. - Algunos metadatos se han rellenado a posteriori con información de un momento posterior al que se publicó el Post en X.
- Perfiles de X
- Posts originales o compartidos
- Clasificación del idioma del Post
- Georreferenciación de Posts
- Medios de enlaces compartidos
Perfiles de X
Posts originales y Retweets
_is:retweet_
permite incluir o excluir Retweets. Quienes lo utilicen necesitan dos estrategias para identificar (o no) Retweets en los datos anteriores a agosto de 2009. Antes de esa fecha, es necesario revisar el contenido del propio Post y buscar coincidencias exactas con el patrón “@RT ” (de hecho, si filtras Retweets entre mayo y agosto de 2009, también debes incluir el patrón “Via @”). Para los periodos posteriores a agosto de 2009, el operador is:retweet está disponible.
Clasificaciones de idioma de los Post
Georreferenciación de Posts
- Referencias geográficas en el mensaje del Post. La coincidencia basada en referencias geográficas en el mensaje del Post, aunque a menudo es el método más desafiante porque depende del conocimiento local, es una opción para todo el archivo de Posts. Aquí hay un ejemplo de coincidencia georreferenciada de 2006 para el área de San Francisco basada en un filtro de ‘golden gate’.
-
Posts geotagueados por el usuario. Con las API de búsqueda, la posibilidad de empezar a hacer coincidencias en Posts con algunos Operadores Geo comenzó en marzo de 2010, y con otros en febrero de 2015:
- 6 de marzo de 2010:
has:geo
,bounding_box:
ypoint_radius:
- 17 de febrero de 2015:
place_country:
yplace:
- 6 de marzo de 2010:
-
Ubicación “home” del perfil de la cuenta establecida por el usuario. Los Operadores Geo de Perfil están disponibles tanto en Historical PowerTrack como en las API de búsqueda. Con las API de búsqueda, estos metadatos de Perfil Geo están disponibles a partir de febrero de 2015. Para Posts publicados antes de que los metadatos de Perfil Geo estuvieran disponibles, está disponible el operador
bio_location:
, que puede usarse para hacer coincidencias con entradas de usuario no normalizadas.
- 26 de octubre de 2006 -
has:links
- 20 de julio de 2011 -
has:images
yhas:media
- Agosto de 2011 -
url:
con el enriquecimiento Expanded URLs Ya en septiembre de 2006,(url:"spotify.com" OR url:gnip OR url:microsoft OR url:google OR url:youtube)
hace coincidencia con http://x.com/Adam/statuses/16602, aunque no hay metadatos urls[] en twitter_entities ni en los objetos gnip. “youtube.com” es un ejemplo de contenido del mensaje que, sin ningún metadato urls[], hace coincidencia con url:youtube. - 10 de febrero de 2015 -
has:videos
para videos nativos. Entre 2010/08/28 y 2015/02/10, este Operator hace coincidencia con Posts con enlaces a sitios de alojamiento de video seleccionados, como youtube.com, vimeo.com y vivo.com. - 1 de mayo de 2016 -
url_title:
yurl_description:
, basados en el enriquecimiento Enhanced URLs, disponibilidad general. Los primeros metadatos de Enhanced URL comenzaron a aparecer en diciembre de 2014.
Preguntas frecuentes (FAQ)
Preguntas generales sobre la API de búsqueda de Posts
La cantidad de Posts que recibo con el endpoint data no coincide con la cantidad de Posts identificados por el endpoint de recuentos. ¿Por qué ocurre esto?
La cantidad de Posts que recibo con el endpoint data no coincide con la cantidad de Posts identificados por el endpoint de recuentos. ¿Por qué ocurre esto?
No recibí un Post que debería coincidir con mi parámetro query. ¿Por qué?
No recibí un Post que debería coincidir con mi parámetro query. ¿Por qué?
- el Post que esperabas ver pertenece a una cuenta protegida
- el endpoint de data considera todos los eventos de cumplimiento (lo que significa que los Posts eliminados, las geolocalizaciones depuradas, etc., no se incluirán en la respuesta).
Mi query coincidió con un Post pero includes una palabra clave que negué. ¿Por qué está sucediendo esto?
Mi query coincidió con un Post pero includes una palabra clave que negué. ¿Por qué está sucediendo esto?
¿Existen bibliotecas que pueda usar para comenzar a utilizar las APIs de Search Post?
¿Existen bibliotecas que pueda usar para comenzar a utilizar las APIs de Search Post?
- Tweepy - ideal para usar el producto estándar de búsqueda/Posts (Python)
- X API - ideal para usar las APIs estándar de Search Post (Python)
- Search Posts Python y Search Posts Ruby - dos herramientas muy útiles para usar con las APIs de Search Post de Enterprise (¡y v2!)
¿Recibiré alguna vez un volumen de Posts menor que el valor que establecí como `maxResults` en mi solicitud al endpoint de datos?
¿Recibiré alguna vez un volumen de Posts menor que el valor que establecí como `maxResults` en mi solicitud al endpoint de datos?
maxResults
especificado o después de 30 días.Por ejemplo, si tienes 800 Posts en un período de 30 días, tendrás que hacer dos solicitudes para obtener los resultados completos, porque el número máximo de Posts que se pueden devolver por solicitud es 500 (maxResults
). Y si solo tienes 400 Posts en el primer mes y luego 100 Posts en el segundo, también tendrás que usar dos solicitudes para obtener los resultados completos, porque la paginación se realiza después de un período de 30 días incluso si la primera solicitud devuelve menos Posts que el maxResults
especificado.¿En qué orden se devuelven los Posts coincidentes?
¿En qué orden se devuelven los Posts coincidentes?
fromDate
solicitado inicialmente.¿Cómo afectan los Edit Posts a mi uso y facturación?
¿Cómo afectan los Edit Posts a mi uso y facturación?
Enterprise
Me interesa conocer más sobre los precios de la API de Search Post para Enterprise y solicitar esta oferta. ¿Cómo puedo hacerlo?
Me interesa conocer más sobre los precios de la API de Search Post para Enterprise y solicitar esta oferta. ¿Cómo puedo hacerlo?
¿Cómo creo un conjunto de reglas que se ajuste a mi caso de uso?
¿Cómo creo un conjunto de reglas que se ajuste a mi caso de uso?
- Consulte nuestra documentación de las APIs de búsqueda de Post para Enterprise aquí
- Puede encontrar información útil sobre reglas y filtrado aquí
- Puede encontrar información útil sobre el uso del endpoint data aquí
- Puede encontrar información útil sobre el uso del endpoint counts aquí
- Puede encontrar una lista de operadores disponibles aquí
He superado mis topes/límites de solicitudes del mes, pero necesito acceder a más data; ¿qué puedo hacer?
He superado mis topes/límites de solicitudes del mes, pero necesito acceder a más data; ¿qué puedo hacer?
Guía de resolución de errores
- Asegúrate de usar los parámetros correctos para cada endpoint (p. ej., el campo
buckets
solo puede usarse con el endpoint de counts, no con el endpoint de data). - Verifica que los campos
:product
,:account_name
y:label
sean correctos. Puedes encontrar tu campo:label
en la GNIP Console (solo para clientes Enterprise).
Referencia de API
APIs de búsqueda Enterprise
- 30-Day Search API: proporciona Tweets publicados en los últimos 30 días.
- Full-Archive Search API: proporciona Tweets desde tan atrás como 2006, comenzando con el primer Tweet publicado en marzo de 2006.
- Métodos para solicitar datos y conteos de Tweets
- Autenticación
- Paginación
- Parámetros de solicitud de la API y solicitudes de ejemplo
- Cargas JSON de respuesta de la API y respuestas de ejemplo
- Códigos de respuesta HTTP
Métodos
https://gnip-api.x.com/search/
.
Método | Descripción |
---|---|
POST /search/:product/accounts/:account_name/:label | Recupera Tweets de los últimos 30 días que coinciden con la regla de PowerTrack especificada. |
POST /search/:product/accounts/:account_name/:label/counts | Recupera el número de Tweets de los últimos 30 días que coinciden con la regla de PowerTrack especificada. |
:product
indica el endpoint de búsqueda al que realiza solicitudes, ya sea30day
ofullarchive
.:account_name
es el nombre (sensible a mayúsculas y minúsculas) asociado con su cuenta, tal como se muestra en console.gnip.com:label
es la etiqueta (sensible a mayúsculas y minúsculas) asociada con su endpoint de búsqueda, tal como se muestra en console.gnip.com
- Endpoint de datos: https://gnip-api.x.com/search/30day/accounts/TwitterDev/prod.json
- Endpoint de conteos: https://gnip-api.x.com/search/30day/accounts/TwitterDev/prod/counts.json
:product
, :account_name
y :label
. Para usar estos ejemplos, asegúrese de actualizar las URL con sus datos.
Autenticación
Comportamiento de solicitud/respuesta
fromDate
y toDate
, puedes solicitar cualquier periodo de tiempo que la API admita. La API de búsqueda de 30 días proporciona Tweets de los 31 días más recientes (aunque se denomine “API de 30 días”, pone a disposición 31 días para permitir solicitudes de mes completo). La API de búsqueda de archivo completo proporciona Tweets desde el primer Tweet (21 de marzo de 2006). Sin embargo, una única respuesta estará limitada al menor valor entre tu maxResults
especificado o 31 días. Si los datos coincidentes o tu rango de tiempo superan tu maxResults
especificado o 31 días, recibirás un token next
que debes usar para paginar el resto de tu rango de tiempo.
Por ejemplo, supongamos que estás usando la búsqueda de archivo completo y quieres todos los Tweets que coincidan con tu query desde el 1 de enero de 2017 hasta el 30 de junio de 2017. Especificarás ese periodo completo de seis meses en tu solicitud usando los parámetros fromDate
y toDate
. La API de búsqueda responderá con la primera “página” de Tweets, con la cantidad de Tweets que coincida con tu parámetro maxResults
(que por defecto es 100). Suponiendo que haya más Tweets (y lo más probable es que los haya), la API también proporcionará un token next
que te permitirá solicitar la siguiente “página” de data. Este proceso se repetirá hasta que la API deje de devolver un token next
. Consulta la siguiente sección para más detalles.
Paginación
Paginación de datos
maxResults
tiene un valor predeterminado de 100 y puede establecerse en un rango de 10 a 500. Si tu query
coincide con más Tweets que el valor de maxResults
usado en la solicitud, la respuesta incluirá un token next
(como un atributo JSON de nivel raíz). Este token next
se utiliza en la solicitud siguiente para recuperar la siguiente parte de los Tweets que coinciden con esa query
(es decir, la siguiente “página”). Se seguirán proporcionando tokens next
hasta que hayas llegado a la última “página” de resultados para esa query
, momento en el que no se proporcionará un token next
.
Para solicitar la siguiente “página” de datos, debes realizar exactamente la misma query
que la original, incluidos los parámetros query
, toDate
y fromDate
, si se usaron, y además incluir un parámetro de solicitud next
con el valor devuelto en la respuesta anterior. Esto puede utilizarse tanto con una solicitud GET como POST. Sin embargo, en el caso de una solicitud GET, el parámetro next
debe ir codificado en la URL.
Puedes seguir pasando el elemento next
de tu query
anterior hasta que hayas recibido todos los Tweets del período cubierto por tu query
. Cuando recibas una respuesta que no incluya un elemento next
, significa que has llegado a la última página y no hay datos adicionales disponibles para la query
y el intervalo de tiempo especificados.
Paginación de recuentos
Notas adicionales
- Al usar fromDate o toDate en una solicitud de búsqueda, solo obtendrá resultados dentro de su rango temporal. Cuando alcance el último grupo de resultados dentro de ese rango, no recibirá un token “next”.
- El elemento “next” se puede usar con cualquier valor de maxResults entre 10 y 500 (valor predeterminado: 100). maxResults determina cuántos Tweets se devuelven en cada respuesta, pero no impide que eventualmente obtenga todos los resultados.
- El elemento “next” no caduca. Varias solicitudes que usen la misma query “next” recibirán los mismos resultados, independientemente de cuándo se haga la solicitud.
- Al paginar los resultados con el parámetro “next”, puede encontrar duplicados en los límites de la query. Su aplicación debe tolerarlos.
Endpoint de datos
POST /search/:product/:label
Patrón del endpoint:
Parámetros de solicitud de datos
Parámetros | Descripción | Obligatorio | Valor de ejemplo |
---|---|---|---|
query | Equivale a una regla de PowerTrack, con hasta 2.048 caracteres (sin límites en la cantidad de cláusulas positivas o negativas). Este parámetro debe incluir TODAS las partes de la regla de PowerTrack, incluidos todos los operadores; no se deben separar partes de la regla en otros parámetros de la query. Nota: No todos los operadores de PowerTrack son compatibles. Los operadores compatibles se enumeran AQUÍ. | Sí | (snow OR cold OR blizzard) weather |
tag | Las etiquetas pueden usarse para segmentar las reglas y sus datos coincidentes en diferentes grupos lógicos. Si se proporciona una etiqueta de regla, esta se incluye en el atributo ‘matching_rules’. Se recomienda asignar UUID específicos de regla a las etiquetas y mantener los mapeos deseados del lado del cliente. | No | 8HYG54ZGTU |
fromDate | La marca de tiempo UTC más antigua (hasta el 21/03/2006 con la búsqueda de archivo completo) desde la cual se proporcionarán los Tweets. La marca de tiempo tiene granularidad de minutos y es inclusiva (p. ej., 12:00 incluye el minuto 00). Especificado: Usar solo fromDate sin el parámetro toDate entregará resultados para la query retrocediendo en el tiempo desde now( ) hasta fromDate. No especificado: Si no se especifica fromDate, la API entregará todos los resultados de los 30 días anteriores a now( ) o a toDate (si se especifica). Si no se usa ni el parámetro fromDate ni toDate, la API entregará todos los resultados de los 30 días más recientes, comenzando en el momento de la solicitud y yendo hacia atrás. | No | 201207220000 |
toDate | La marca de tiempo UTC más reciente hasta la cual se proporcionarán los Tweets. La marca de tiempo tiene granularidad de minutos y no es inclusiva (p. ej., 11:59 no incluye el minuto 59 de la hora). Especificado: Usar solo toDate sin el parámetro fromDate entregará los 30 días más recientes de datos anteriores a toDate. No especificado: Si no se especifica toDate, la API entregará todos los resultados desde now( ) para la query retrocediendo en el tiempo hasta fromDate. Si no se usa ni fromDate ni toDate, la API entregará todos los resultados de todo el índice de 30 días, comenzando en el momento de la solicitud y yendo hacia atrás. | No | 201208220000 |
maxResults | El número máximo de resultados de búsqueda que se devolverán en una solicitud. Un número entre 10 y el límite del sistema (actualmente 500). De forma predeterminada, la respuesta de una solicitud devolverá 100 resultados. | No | 500 |
next | Este parámetro se usa para obtener la siguiente “página” de resultados, como se describe AQUÍ. El valor usado con el parámetro se toma directamente de la respuesta proporcionada por la API y no debe modificarse. | No | NTcxODIyMDMyODMwMjU1MTA0 |
Detalles adicionales
Periodo de disponibilidad | 30 días: últimos 31 días Archivo completo: 21 de marzo de 2006 - presente |
Formato de query | Equivalente a una regla de PowerTrack, con hasta 2.048 caracteres (y sin límites en la cantidad de cláusulas positivas o negativas). Nota: No todos los operadores de PowerTrack son compatibles. Consulta Available operators para ver la lista de operadores compatibles. |
Límite de tasa | Los partners estarán sujetos a límites de tasa con granularidad por minuto y por segundo. El límite por minuto variará según el partner, tal como se especifica en tu contrato. Sin embargo, estos límites por minuto no están pensados para consumirse en una sola ráfaga. Independientemente de tu límite por minuto, todos los partners estarán limitados a un máximo de 20 solicitudes por segundo, agregadas entre todas las solicitudes de data y/o recuentos. |
Cumplimiento | Toda la data entregada a través de la Full-Archive Search API cumple con las políticas al momento de la entrega. |
Disponibilidad en tiempo real | La data está disponible en el índice dentro de los 30 segundos posteriores a su generación en la plataforma de Twitter |
Ejemplos de solicitudes y respuestas de data
Ejemplo de solicitud POST
- Los parámetros de una solicitud POST se envían en un cuerpo con formato JSON, como se muestra a continuación.
- Todas las partes de la regla de PowerTrack que se desea consultar (p. ej., palabras clave u otros operadores como bounding_box:) deben colocarse en el parámetro ‘query’.
- No separe partes de la regla como parámetros independientes en la URL de la consulta.
Ejemplo de solicitud GET
- Los parámetros en una solicitud GET se codifican en la URL mediante la codificación estándar de URL.
- Todas las partes de la regla de PowerTrack que se van a consultar (p. ej., palabras clave u otros operadores como bounding_box:) deben incluirse en el parámetro ‘query’.
- No divida partes de la regla en parámetros independientes dentro de la URL de la consulta.
Ejemplos de respuestas de data
endpoint de conteos
/search/:stream/counts
Patrón del endpoint:
/search/fullarchive/accounts/:account_name/:label/counts.json
Este endpoint devuelve datos de conteo (volúmenes de datos) para la query especificada. Si no se especifica un periodo de tiempo, los parámetros de tiempo tendrán como valor predeterminado los últimos 30 días. Los volúmenes de datos se devuelven como un arreglo con marca de tiempo, ya sea diario, por hora (predeterminado) o por minuto.
Nota: Esta funcionalidad también puede realizarse mediante una solicitud GET, en lugar de una POST, codificando en la URL los parámetros descritos a continuación.
Parámetros de la solicitud de conteos
Parámetros | Descripción | Obligatorio | Valor de ejemplo |
---|---|---|---|
query | Equivale a una regla de PowerTrack, con hasta 2,048 caracteres (y sin límites en la cantidad de cláusulas positivas y negativas). Este parámetro debe incluir TODAS las partes de la regla de PowerTrack, incluidos todos los operadores; no se deben separar porciones de la regla en otros parámetros de la query. Nota: No todos los operadores de PowerTrack son compatibles. Consulta Available operators para ver la lista de operadores compatibles. | Sí | (snow OR cold OR blizzard) weather |
fromDate | La marca de tiempo UTC más antigua (hasta el 21/03/2006) a partir de la cual se proporcionarán los Tweets. La marca de tiempo tiene granularidad de minuto y es inclusiva (es decir, 12:00 incluye el minuto 00). Especificado: Si solo se usa fromDate sin el parámetro toDate, la API devolverá datos de conteos (volúmenes de data) para la query retrocediendo en el tiempo desde ahora hasta fromDate. Si fromDate es anterior a 31 días desde ahora ( ), recibirás un token next para paginar la solicitud. No especificado: Si no se especifica fromDate, la API devolverá conteos (volúmenes de data) de los 30 días anteriores a ahora ( ) o a toDate (si se especifica). Si no se usan los parámetros fromDate ni toDate, la API devolverá conteos (volúmenes de data) de los 30 días más recientes, comenzando en el momento de la solicitud y retrocediendo. | No | 201207220000 |
toDate | La marca de tiempo UTC más reciente hasta la cual se proporcionarán los Tweets. La marca de tiempo tiene granularidad de minuto y no es inclusiva (es decir, 11:59 no incluye el minuto 59 de la hora). Especificado: Si solo se usa toDate sin el parámetro fromDate, se devolverán los conteos más recientes (volúmenes de data) de los 30 días anteriores a toDate. No especificado: Si no se especifica toDate, la API devolverá conteos (volúmenes de data) para la query retrocediendo en el tiempo hasta fromDate. Si fromDate es anterior a 31 días desde ahora ( ), recibirás un token next para paginar la solicitud. Si no se usan los parámetros fromDate ni toDate, la API devolverá conteos (volúmenes de data) de los 30 días más recientes, comenzando en el momento de la solicitud y retrocediendo. | No | 201208220000 |
bucket | La unidad de tiempo para la cual se proporcionarán los datos de conteo. Los datos de conteo pueden devolverse por cada día, hora o minuto en el período solicitado. De forma predeterminada, se proporcionarán conteos por hora. Opciones: ‘day’, ‘hour’, ‘minute’ | No | minute |
next | Este parámetro se usa para obtener la siguiente “página” de resultados, como se describe AQUÍ. El valor utilizado con el parámetro se toma directamente de la respuesta proporcionada por la API y no debe modificarse. | No | NTcxODIyMDMyODMwMjU1MTA0 |
Detalles adicionales
Periodo disponible | 30 días: últimos 31 días Archivo completo: 21 de marzo de 2006 - presente |
Formato de query | Equivale a una regla de PowerTrack, con hasta 2,048 caracteres. Nota: No todos los operadores de PowerTrack son compatibles. Consulta Available operators para ver la lista de operadores compatibles. |
Límite de tasa | Los partners estarán sujetos a límite de tasa con granularidad tanto por minuto como por segundo. El límite de tasa por minuto variará según el partner, tal como se especifique en tu contrato. Sin embargo, estos límites por minuto no están pensados para usarse en una sola ráfaga. Independientemente de tu límite de tasa por minuto, todos los partners estarán limitados a un máximo de 20 solicitudes por segundo, agregado en todas las solicitudes de data y/o conteos. |
Precisión del conteo | Los conteos entregados a través de este endpoint reflejan la cantidad de Tweets que se produjeron y no reflejan eventos de cumplimiento posteriores (eliminaciones, scrub geos). Algunos Tweets contabilizados pueden no estar disponibles mediante el endpoint de data debido a acciones de cumplimiento del usuario. |
Ejemplos de solicitudes y respuestas de recuentos
Ejemplo de solicitud POST
- Los parámetros de una solicitud POST se envían en un cuerpo con formato JSON, como se muestra a continuación.
- Todas las partes de la regla de PowerTrack que se van a consultar (p. ej., palabras clave u otros operadores como bounding_box:) deben incluirse en el parámetro ‘query’.
- No separe partes de la regla como parámetros independientes en la URL de la query.
Ejemplo de solicitud GET
- Los parámetros en una solicitud GET se codifican en la URL, utilizando la codificación estándar de URL
- Todos los componentes de la regla de PowerTrack que se están consultando (p. ej., palabras clave, otros operadores como bounding_box:) deben colocarse en el parámetro ‘query’
- No separe componentes de la regla como parámetros individuales en la URL de la consulta
Ejemplos de respuestas de conteos
Códigos de respuesta HTTP
Estado | Texto | Descripción |
---|---|---|
200 | OK | La solicitud se completó correctamente. La respuesta JSON será similar a la siguiente: |
400 | Bad Request | Generalmente, esta respuesta se debe a la presencia de JSON no válido en la solicitud o a que no se envió ningún payload JSON. |
401 | Unauthorized | La autenticación HTTP falló debido a credenciales no válidas. Inicie sesión en console.gnip.com con sus credenciales para asegurarse de que las está usando correctamente en su solicitud. |
404 | Not Found | El recurso no se encontró en la URL a la que se envió la solicitud, probablemente porque se utilizó una URL incorrecta. |
422 | Unprocessable Entity | Se devuelve debido a parámetros no válidos en la query; p. ej., reglas de PowerTrack no válidas. |
429 | Unknown Code | Su App ha excedido el límite de solicitudes de conexión. El mensaje JSON correspondiente será similar al siguiente: |
500 | Internal Server Error | Ocurrió un error en el servidor. Reintente la solicitud usando un patrón de backoff exponencial. |
502 | Proxy Error | Ocurrió un error en el servidor. Reintente la solicitud usando un patrón de backoff exponencial. |
503 | Service Unavailable | Ocurrió un error en el servidor. Reintente la solicitud usando un patrón de backoff exponencial. |