Atenção: Lançamos uma nova versão de busca de Posts e de contagem de Posts na X API v2. Recomendamos que você confira as novidades da X API v2. Esses endpoints foram atualizados para incluir metadata de edição de Post. Saiba mais sobre essa metadata na página de fundamentos “Editar Posts”.
Visão geral
Enterprise
As APIs Enterprise estão disponíveis apenas em nossos níveis de acesso gerenciado. Para usar essas APIs, você deve primeiro configurar uma conta com nossa equipe de vendas Enterprise. Para saber mais, consulte AQUI.
Você pode ver todas as ofertas de pesquisa de Post da X API AQUI.
Há duas APIs de pesquisa Enterprise:
- A 30-Day Search API fornece dados dos últimos 30 dias.
- A Full-Archive Search API fornece acesso completo e instantâneo a todo o corpus de dados da X, desde o primeiro Post em março de 2006.
Tipos de solicitação
Solicitações de pesquisa (data)
Solicitações de contagem (Contagem de Posts)
Operadores disponíveis
Correspondência no conteúdo do Post: | Correspondência com contas de interesse: | Atributos do Post: | Operadores geoespaciais: |
* palavra‑chave * “frase entre aspas” * “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 somente de negação) | * 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: |
Disponibilidade de dados / datas importantes
- Primeiro Post: 21/3/2006
- Primeiros Retweets nativos: 6/11/2009
- Primeiro Post georreferenciado: 19/11/2009
- URLs indexadas pela primeira vez para filtragem: 27/8/2011
- metadata de expansão de URL aprimorada (títulos e descrições de sites): 1/12/2014
- Enriquecimento e filtragem de Profile Geo metadata: 17/2/2015
Atualizações de dados e mutabilidade
- metadata do objeto de usuário:
- @handle do usuário (o id numérico nunca muda)
- Descrição da bio
- Contagens: statuses, seguidores, amigos, favoritos, Lists
- Localização do perfil
- Outros detalhes, como fuso horário e idioma
- Estatísticas do Post — ou seja, qualquer coisa que possa ser alterada na plataforma por ações do usuário (exemplos abaixo):
- Contagem de favoritos
- Contagem de Retweet
Solicitações single-thread vs. multi-thread
Lógica de novas tentativas
- Tente novamente após reduzir o intervalo de tempo coberto pela solicitação. Se necessário, repita até chegar a uma janela de 6 horas.
- Se você estiver usando OR para combinar um grande número de termos, divida-os em regras separadas e tente cada uma individualmente.
- Se você estiver usando muitas exclusões na sua regra, reduza a quantidade de termos negados e tente novamente.
Introdução rápida
Introdução à enterprise Search Posts: 30-Day API
- [Uma conta Enterprise]https://developer.x.com/en/products/x-api/enterprise
- Seu nome de usuário, senha e nome da conta
- Rótulo associado ao seu endpoint de pesquisa, conforme exibido em console.gnip.com
Acessando o endpoint de data
from:
e lang:
para encontrar Posts publicados por @XDevelopers em inglês. Para mais operadores, clique aqui.
- cURL
- cURL example
-
Username
<USERNAME>
por exemplo,email@domain.com
-
Account name
<ACCOUNT-NAME>
por exemplo,john-doe
-
Label
<LABEL>
por exemplo,prod
-
fromDate e toDate por exemplo,
"fromDate":"201811010000", "toDate":"201811122359"
Payload de resposta do endpoint de dados
Acessando o endpoint de contagens
day
.
- cURL
- cURL example
-
Username
<USERNAME>
por exemplo,email@domain.com
-
Account name
<ACCOUNT-NAME>
por exemplo,john-doe
-
Label
<LABEL>
por exemplo,prod
-
fromDate e toDate por exemplo,
"fromDate":"201811010000", "toDate":"201811122359"
Payload de resposta do endpoint Counts
Artigos relacionados
Introdução ao uso da Enterprise Search Posts: Full-Archive API
- Uma conta Enterprise — https://developer.x.com/en/products/x-api/enterprise
- Seu nome de usuário, senha e nome da conta
- Rótulo associado ao seu endpoint de pesquisa, conforme exibido em console.gnip.com
Acessando o endpoint de data
from:
e lang:
para encontrar Posts publicados por @XDevelopers em inglês. Para ver mais operadores, clique aqui.
- cURL
- cURL example
-
Nome de usuário
<USERNAME>
por exemplo:email@domain.com
-
Nome da conta
<ACCOUNT-NAME>
por exemplo:john-doe
-
Label
<LABEL>
por exemplo:prod
-
fromDate e toDate por exemplo:
"fromDate":"201802010000", "toDate":"201802282359"
Payload de resposta do endpoint de dados
Acessando o endpoint de contagens
day
.
- cURL
- cURL example
-
Username
<USERNAME>
, por exemplo,email@domain.com
-
Account name
<ACCOUNT-NAME>
, por exemplo,john-doe
-
Label
<LABEL>
, por exemplo,prod
-
fromDate e toDate, por exemplo,
"fromDate":"201802010000", "toDate":"201802282359"
Payload de resposta do endpoint Counts
Artigos relacionados
Guias
Criando consultas de pesquisa
Operadores do Enterprise
- API de pesquisa de 30 dias do Enterprise
- API de pesquisa de arquivo completo do Enterprise
Operador | Descrição |
---|---|
keyword | Encontra uma palavra-chave tokenizada no corpo ou URLs de um Post. Esta é uma correspondência tokenizada, o que significa que sua string de palavra-chave será comparada ao texto tokenizado do corpo do Post – a tokenização é baseada em pontuação, símbolos e caracteres separadores do plano básico Unicode. Por exemplo, um Post com o texto “I like coca-cola” seria dividido nos seguintes tokens: I, like, coca, cola. Esses tokens seriam então comparados à string de palavra-chave usada em sua regra. Para encontrar strings contendo pontuação (por exemplo, coca-cola), símbolos ou caracteres separadores, você deve usar uma correspondência exata entre aspas conforme descrito abaixo. Observação: Com a API de Pesquisa, caracteres acentuados e especiais são normalizados para caracteres latinos padrão, o que pode alterar significados em idiomas estrangeiros ou retornar resultados inesperados: Por exemplo, “músic” encontrará “music” e vice-versa. Por exemplo, frases comuns como “Feliz Año Nuevo!” em espanhol seriam indexadas como “Feliz Ano Nuevo”, o que altera o significado da frase. Observação: Este operador encontrará tanto URLs quanto URLs expandidas dentro de um Post. |
emoji | Encontra um emoji no corpo de um Post. Emojis são uma correspondência tokenizada, o que significa que seu emoji será comparado ao texto tokenizado do corpo do Post – a tokenização é baseada em pontuação, símbolos/emojis e caracteres separadores do plano básico Unicode. Por exemplo, um Post com o texto “I like ” seria dividido nos seguintes tokens: I, like, . Esses tokens seriam então comparados ao emoji usado em sua regra. Observe que se um emoji tem uma variante, você deve usar “aspas” para adicioná-lo a uma regra. |
”correspondência de frase exata” | Encontra a frase tokenizada e ordenada no corpo ou URLs de um Post. Esta é uma correspondência tokenizada, o que significa que sua string de palavra-chave será comparada ao texto tokenizado do corpo do Post – a tokenização é baseada em pontuação, símbolos e caracteres separadores do plano básico Unicode. Observação: A pontuação não é tokenizada e é tratada como espaço em branco. Por exemplo, “#hashtag” entre aspas encontrará “hashtag” mas não #hashtag (use o operador hashtag # sem aspas para encontrar hashtags reais). Por exemplo, “cashtag" entre aspas encontrará "cashtag" mas não cashtag (use o operador cashtag $ sem aspas para encontrar cashtags reais). Por exemplo, “Love Snow” encontrará “#love #snow” Por exemplo, “#Love #Snow” encontrará “love snow” Observação: Este operador encontrará tanto URLs quanto URLs expandidas dentro de um Post. |
”keyword1 keyword2”~N | Comumente chamado de operador de proximidade, encontra um Post onde as palavras-chave estão a no máximo N tokens uma da outra. Se as palavras-chave estão em ordem inversa, elas não podem estar a mais de N-2 tokens uma da outra. Pode ter qualquer número de palavras-chave entre aspas. N não pode ser maior que 6. Observe que este operador está disponível apenas nas APIs de pesquisa enterprise . |
from: | Encontra qualquer Post de um usuário específico. O valor deve ser o ID numérico da Conta X do usuário ou nome de usuário (excluindo o caractere @). Consulte AQUI ou AQUI para métodos de busca de IDs numéricos de Conta X. |
to: | Encontra qualquer Post que é uma resposta a um usuário específico. O valor deve ser o ID numérico da Conta do usuário ou nome de usuário (excluindo o caractere @). Consulte AQUI para métodos de busca de IDs numéricos de Conta X. |
url: | Executa uma correspondência tokenizada (palavra-chave/frase) nas URLs expandidas de um Post (similar ao url_contains). Tokens e frases contendo pontuação ou caracteres especiais devem estar entre aspas duplas. Por exemplo, url:“/developer”. Embora geralmente não seja recomendado, se você quiser encontrar um protocolo específico, coloque entre aspas duplas: url:“https://developer.x.com”. Observação: Ao usar PowerTrack ou Historical PowerTrack, este operador encontrará URLs contidas no Post original de um Quote Post. Por exemplo, se sua regra inclui url:“developer.x.com”, e um Post contém essa URL, quaisquer Quote Tweets desse Post serão incluídos nos resultados. Este não é o caso ao usar a API de Pesquisa. |
# | Encontra qualquer Post com a hashtag fornecida. Este operador executa uma correspondência exata, NÃO uma correspondência tokenizada, o que significa que a regra “2016” encontrará posts com a hashtag exata “2016”, mas não aqueles com a hashtag “2016election” Observação: o operador hashtag depende da extração de entidades do X para encontrar hashtags, em vez de extrair a hashtag do próprio corpo. Consulte AQUI para mais informações sobre os atributos JSON de Entidades X. |
@ | Encontra qualquer Post que menciona o nome de usuário fornecido. O operador to: retorna uma correspondência de subconjunto do operador @mention. |
$ | Encontra qualquer Post que contém o ‘cashtag’ especificado (onde o caractere inicial do token é o caractere ’$’). Observe que o operador cashtag depende da extração de entidades ‘symbols’ do X para encontrar cashtags, em vez de tentar extrair o cashtag do próprio corpo. Consulte AQUI para mais informações sobre os atributos JSON de Entidades X. Observe que este operador está disponível apenas nas APIs de pesquisa enterprise . |
retweets_of: | Alias disponível: retweets_of_user: Encontra Posts que são retweets de um usuário especificado. Aceita tanto nomes de usuário quanto IDs numéricos de Conta X (NÃO IDs de status de Post). Consulte AQUI para métodos de busca de IDs numéricos de Conta X. |
lang: | Encontra Posts que foram classificados pelo X como sendo de um idioma específico (se, e somente se, o post foi classificado). É importante observar que cada Post é atualmente classificado como sendo de apenas um idioma, então usar AND com múltiplos idiomas não produzirá resultados. Observação: se nenhuma classificação de idioma puder ser feita, o resultado fornecido é ‘und’ (para indefinido). A lista abaixo representa os idiomas atualmente suportados e seu identificador de idioma BCP 47 correspondente: |
Amárico: am | Alemão: de | Malaiala: ml | Eslovaco: sk |
Árabe: ar | Grego: el | Maldívio: dv | Esloveno: sl |
Armênio: hy | Guzerate: gu | Marata: mr | Curdo Sorâni: ckb |
Basco: eu | Crioulo haitiano: ht | Nepalês: ne | Espanhol: es |
Bengali: bn | Hebraico: iw | Norueguês: no | Sueco: sv |
Bósnio: bs | Hindi: hi | Oriá: or | Tagalo: tl |
Búlgaro: bg | Hindi romanizado: hi-Latn | Punjabi: pa | Tâmil: ta |
Birmanês: my | Húngaro: hu | Pachto: ps | Telugo: te |
Croata: hr | Islandês: is | Persa: fa | Tailandês: th |
Catalão: ca | Indonésio: in | Polonês: pl | Tibetano: bo |
Tcheco: cs | Italiano: it | Português: pt | Chinês tradicional: zh-TW |
Dinamarquês: da | Japonês: ja | Romeno: ro | Turco: tr |
Holandês: nl | Canarim: kn | Russo: ru | Ucraniano: uk |
Inglês: en | Khmer: km | Sérvio: sr | Urdu: ur |
Estoniano: et | Coreano: ko | Chinês simplificado: zh-CN | Uigur: ug |
Finlandês: fi | Lao: lo | Sindi: sd | Vietnamita: vi |
Francês: fr | Letão: lv | Cingalês: si | Galês: cy |
Georgiano: ka | Lituano: lt |
place: | Corresponde a Posts marcados com a localização especificada ou com o X place ID (veja exemplos). Nomes de lugares com várias palavras (“New York City”, “Palo Alto”) devem estar entre aspas. Observação: Consulte o endpoint público da API GET geo/search para saber como obter X place IDs. Observação: Este operador não retornará correspondência em Retweets, pois os lugares dos Retweets estão anexados ao Post original. Também não corresponderá a lugares anexados ao Post original de um Quote Tweet. |
place_country: | Corresponde a Posts em que o código do país associado a um place marcado corresponde ao código ISO alfa-2 informado. Códigos ISO válidos podem ser encontrados aqui: http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 Observação: Este operador não retornará correspondência em Retweets, pois os lugares dos Retweets estão anexados ao Post original. Também não corresponderá a lugares anexados ao Post original de um Quote Tweet. |
point_radius:[lon lat radius] | Corresponde à Localização Exata (x,y) do Post, quando presente, e, no X, a um polígono geográfico “Place”, em que o Place esteja totalmente contido na região definida. * As unidades de raio compatíveis são milhas (mi) e quilômetros (km). * O raio deve ser menor que 25 mi. * A longitude está no intervalo de ±180. * A latitude está no intervalo de ±90. * Todas as coordenadas estão em graus decimais. * Os argumentos da regra devem estar entre colchetes, separados por espaço. Observação: Este operador não retornará correspondência em Retweets, pois os lugares dos Retweets estão anexados ao Post original. Também não corresponderá a lugares anexados ao Post original de um Quote Tweet. |
bounding_box:[west_long south_lat east_long north_lat] | Alias disponível: geo_bounding_box: Corresponde à Localização Exata (long, lat) do Post, quando presente, e, no X, a um polígono geográfico “Place”, em que o Place esteja totalmente contido na região definida. * west_long e south_lat representam o canto sudoeste da caixa delimitadora, em que west_long é a longitude desse ponto e south_lat é a latitude. * east_long e north_lat representam o canto nordeste da caixa delimitadora, em que east_long é a longitude desse ponto e north_lat é a latitude. * A largura e a altura da caixa delimitadora devem ser menores que 25 mi. * A longitude está no intervalo de ±180. * A latitude está no intervalo de ±90. * Todas as coordenadas estão em graus decimais. * Os argumentos da regra devem estar entre colchetes, separados por espaço. Observação: Este operador não retornará correspondência em Retweets, pois os lugares dos Retweets estão anexados ao Post original. Também não corresponderá a lugares anexados ao Post original de um Quote Tweet. |
profile_country: | Correspondência exata no campo “countryCode” do objeto “address” no enriquecimento Geo de Perfil. Usa um conjunto normalizado de códigos de país de duas letras, com base na especificação ISO-3166-1-alpha-2. Este operador é fornecido em vez de um operador para o campo “country” do objeto “address”, para ser conciso. |
profile_region: | Corresponde ao campo “region” do objeto “address” no enriquecimento Geo de Perfil. Trata-se de uma correspondência exata de string completa. Não é necessário escapar caracteres com barra invertida. Por exemplo, ao corresponder algo com uma barra, use “one/two”, não “one/two”. Use aspas duplas para corresponder substrings que contenham espaços em branco ou pontuação. |
profile_locality: | Corresponde ao campo “locality” do objeto “address” no enriquecimento Geo de Perfil. Trata-se de uma correspondência exata de string completa. Não é necessário escapar caracteres com barra invertida. Por exemplo, ao corresponder algo com uma barra, use “one/two”, não “one/two”. Use aspas duplas para corresponder substrings que contenham espaços em branco ou pontuação. |
has:geo | Corresponde a Posts que possuem dados de localização geográfica específicos do Post fornecidos pelo X. Isso pode ser coordenadas “geo” de latitude-longitude, ou uma “location” na forma de um X “Place”, com nome de exibição correspondente, polígono geográfico e outros campos. Observação: Ao usar a Search API, este operador deve ser usado em conjunto com outros operadores que não incluam is: ou has: . |
has:profile_geo | Alias disponível: has:derived_user_geo Corresponde a Posts que possuem qualquer metadata de Profile Geo, independentemente do valor real. Observação: Ao usar a Search API, este operador deve ser usado em conjunto com outros operadores que não incluam is: ou has: . |
has:links | Este operador corresponde a Posts que contêm links no corpo da mensagem. Observação: Ao usar a Search API, este operador deve ser usado em conjunto com outros operadores que não incluam is: ou has: . |
is:retweet | Entrega apenas retweets explícitos que correspondem a uma regra. Também pode ser negado para excluir retweets que correspondem a uma regra da entrega e entregar apenas conteúdo original. Este operador procura apenas por Retweets verdadeiros, que usam a funcionalidade de retweet do X. Quote Tweets e Posts Modificados que não usam a funcionalidade de retweet do X não serão correspondidos por este operador. Observação: Ao usar a Search API, este operador deve ser usado em conjunto com outros operadores que não incluam is: ou has: . |
is:reply | Um operador para filtrar Posts com base em se são ou não respostas a Posts. Entrega apenas respostas explícitas que correspondem a uma regra. Também pode ser negado para excluir respostas que correspondem a uma regra da entrega. Observe que este operador está disponível para busca premium paga e Enterprise e não está disponível em ambientes de desenvolvimento Sandbox. Observação: Ao usar a Search API, este operador deve ser usado em conjunto com outros operadores que não incluam is: ou has: . |
is:quote | Entrega apenas Quote Tweets, ou Posts que referenciam outro Post, conforme identificado pelo “is_quote_status”:true nos payloads do Post. Também pode ser negado para excluir Quote Tweets. Observação: Ao usar a Search API, este operador deve ser usado em conjunto com outros operadores que não incluam is: ou has: . |
is:verified | Entrega apenas Posts onde o autor é “verificado” pelo X. Também pode ser negado para excluir Posts onde o autor é verificado. Observação: Ao usar a Search API, este operador deve ser usado em conjunto com outros operadores que não incluam is: ou has: . |
has:mentions | Corresponde a Posts que mencionam outro usuário do X. Observação: Ao usar a Search API, este operador deve ser usado em conjunto com outros operadores que não incluam is: ou has: . |
has:hashtags | Corresponde a Posts que contêm uma hashtag. Observação: Ao usar a Search API, este operador deve ser usado em conjunto com outros operadores que não incluam is: ou has: . |
has:media | Alias disponível: has:media_link Corresponde a Posts que contêm uma URL de mídia classificada pelo X. Por exemplo, pic.x.com. Observação: Ao usar a Search API, este operador deve ser usado em conjunto com outros operadores que não incluam is: ou has: . |
has:images | Corresponde a Posts que contêm uma URL de mídia classificada pelo X. Por exemplo, pic.x.com. Observação: Ao usar a Search API, este operador deve ser usado em conjunto com outros operadores que não incluam is: ou has: . |
has:videos | Alias disponível: has:video_link Corresponde a Posts que contêm vídeos nativos do X, enviados diretamente para o X. Isso não corresponderá a vídeos criados com Vine, Periscope, ou Posts com links para outros sites de hospedagem de vídeo. Observação: Ao usar a Search API, este operador deve ser usado em conjunto com outros operadores que não incluam is: ou has: . |
has:symbols | Corresponde a Posts que contêm um símbolo cashtag (com um caractere ‘' inicial. Por exemplo, tag). Observe que este operador está disponível apenas nas APIs de busca Enterprise . Observação: Ao usar a Search API, este operador deve ser usado em conjunto com outros operadores que não incluam is: ou has: . |
Visão geral do produto
Cronogramas de metadata
to:
e in_reply_to_status_id:
.
Os detalhes fornecidos aqui foram gerados usando Full-Archive Search (resultado de centenas de buscas). Este cronograma não é 100% completo ou preciso. Se você identificar outra “data de nascimento” de filtragem/metadata fundamental para o seu caso de uso, por favor, avise-nos.
Observe que o índice de Search subjacente pode ser reconstruído. Consequentemente, esses detalhes do cronograma estão sujeitos a alterações.
2006
- 26 de março -
lang:
. Um exemplo de metadata de Post sendo preenchida retroativamente durante a geração do índice de busca. - 13 de julho -
has:mentions
passa a ter correspondência. - 6 de outubro -
has:symbols
. slang). - 26 de outubro -
has:links
passa a ter correspondência. - 23 de novembro -
has:hashtags
passa a ter correspondência.
2007
- 30 de janeiro - Primeira @reply de primeira classe (in_reply_to_user_id);
reply_to_status_id:
passa a corresponder. - 23 de agosto - Hashtags surgem como uma convenção comum para organizar tópicos e conversas. Primeiro uso real uma semana depois.
2009
- 15 de maio -
is:retweet
. Observe que este operador começa a corresponder com o lançamento beta de Retweets oficiais e seu padrão “Via @”. Durante esse período beta, o verbo do Post é “post” e o Post original não é incluído no payload. - 13 de agosto - A versão final dos Retweets oficiais é lançada com o padrão “RT @”, um verbo definido como “share” e o atributo “retweet_status” contendo o Post original (assim, aproximadamente dobrando o tamanho do payload JSON).
2010
- 6 de março – os Operadores geográficos
has:geo
,bounding_box:
epoint_radius:
passam a fazer correspondência. - 28 de agosto –
has:videos
(Até fevereiro de 2015, este Operador fazia correspondência com Posts que continham links para determinados sites de hospedagem de vídeo, como youtube.com, vimeo.com e vivo.com).
2011
- 20 de julho -
has:media
ehas:images
passam a corresponder. Fotos nativas anunciadas oficialmente em 9 de agosto de 2010.
2014
- 3 de dezembro — (aproximadamente) Alguns Enhanced URL metadata com title e descrição em HTML começam a aparecer nos payloads. A metadata aprimorada passou a se consolidar em maio de 2016.
2015
- 10 de fevereiro -
has:videos
corresponde a vídeos “nativos” do X. - 17 de fevereiro - Os operadores de Profile Geo
has:profile_geo
,profile_country:
,profile_region:
,profile_locality:
passam a ter correspondência. - 17 de fevereiro - Os operadores de geolocalização de Post
place_country:
eplace:
passam a ter correspondência.
2016
- 1º de maio - metadados de URL aprimorados mais amplamente disponíveis e anunciados oficialmente como parte do lançamento do Gnip 2.0 em agosto de 2016. Sem operadores associados para esses metadados nas APIs de Search.
2017
- 22 de fevereiro - Metadata de enquete ficam disponíveis em formato nativo enriquecido. Não há Operadores associados para essas metadata.
2022
- 27 de setembro - Todos os Objetos Post criados desde essa data têm metadados de Post editado disponíveis. Todos os endpoints Enterprise que fornecem Objetos Post foram atualizados para fornecer esses metadados a partir dessa data. Os metadados de edição fornecidos incluem os objetos edit_history e edit_controls. Esses metadados não serão retornados para Posts criados antes de 27 de setembro de 2022. Atualmente, não há Operadores Enterprise disponíveis que correspondam a esses metadados. Para saber mais sobre os metadados de edição de Post, confira a página Fundamentos de edição de Posts.
2022
- 29 de setembro – Todos os Objetos Post criados desde essa data têm metadados de Post editado disponíveis. Todos os endpoints Enterprise que fornecem Objetos Post foram atualizados para fornecer esses metadados a partir dessa data. Os metadados de edição fornecidos incluem os objetos edit_history e edit_controls. Esses metadados não serão retornados para Posts criados antes de 27 de setembro de 2022. Atualmente, não há Operadores Enterprise disponíveis que correspondam a esses metadados. Para saber mais sobre os metadados de Edit Post, confira a página Edit Posts fundamentals.
Dicas de filtragem
- Alguns metadata têm datas de “nascimento”, portanto os filtros podem resultar em falsos negativos. Essas buscas incluem operadores que dependem de metadata que não existiam durante todo ou parte do período pesquisado. Por exemplo, se você estiver procurando Posts com o operador
has:images
, não haverá correspondências para períodos anteriores a julho de 2011. Isso ocorre porque esse operador corresponde a fotos nativas (anexadas a um Post usando a interface do usuário do X). Para um conjunto de dados mais completo de Posts de compartilhamento de fotos, filtros para antes de julho de 2011 precisariam conter cláusulas de regra que correspondam a URLs comuns de hospedagem de fotos. - Alguns metadata foram preenchidos retroativamente com informações de um período posterior ao momento em que o Post foi publicado.
- Perfis do X
- Posts originais ou compartilhados
- Classificação de idioma do Post
- Georreferenciamento de Posts
- Mídia de links compartilhados
Perfis no X
Posts originais e Retweets
_is:retweet_
permite incluir ou excluir Retweets. Usuários desse operador precisam adotar duas estratégias para identificar (ou não) Retweets em dados anteriores a agosto de 2009. Antes de agosto de 2009, é necessário verificar a própria mensagem do Post, usando correspondência de frase exata, para achar ocorrências do padrão “@RT ” (na verdade, se você estiver filtrando Retweets entre maio e agosto de 2009, o padrão “Via @” também deve ser incluído). Para períodos após agosto de 2009, o operador is:retweet está disponível.
Classificações de idioma de Post
Georreferenciamento de Posts
- Referências geográficas na mensagem do Post. Fazer correspondência com referências geográficas na mensagem do Post, embora muitas vezes seja o método mais desafiador por depender de conhecimento local, é uma opção para todo o arquivo de Posts. Aqui está um exemplo de correspondência georreferenciada de 2006 para a região de São Francisco com base em um filtro “golden gate”.
-
Posts com geotag definidos pelo usuário. Com as APIs de busca, a capacidade de começar a corresponder Posts usando alguns Operadores de Geo começou em março de 2010 e, com outros, em fevereiro de 2015:
- 6 de março de 2010:
has:geo
,bounding_box:
epoint_radius:
- 17 de fevereiro de 2015:
place_country:
eplace:
- 6 de março de 2010:
-
Localização “home” do perfil da conta definida pelo usuário. Operadores de Geo de Perfil estão disponíveis tanto no Historical PowerTrack quanto nas Search APIs. Com as Search APIs, esses metadados de Geo de Perfil estão disponíveis a partir de fevereiro de 2015. Para Posts publicados antes de os metadados de Geo de Perfil estarem disponíveis, o operador
bio_location:
está disponível e pode ser usado para corresponder a entradas de usuário não normalizadas.
- 26 de outubro de 2006 -
has:links
- 20 de julho de 2011 -
has:images
ehas:media
- agosto de 2011 -
url:
com o Expanded URLs enrichment. Já em setembro de 2006,(url:"spotify.com" OR url:gnip OR url:microsoft OR url:google OR url:youtube)
faz correspondência com http://x.com/Adam/statuses/16602, mesmo sem metadados urls[] em twitter_entities e nos objetos gnip. “youtube.com” é um exemplo de conteúdo de mensagem que, sem quaisquer metadados urls[], corresponde a url:youtube. - 10 de fevereiro de 2015 -
has:videos
para vídeos nativos. Entre 2010/08/28 e 2015/02/10, esse Operator corresponde a Posts com links para sites selecionados de hospedagem de vídeo, como youtube.com, vimeo.com e vivo.com. - 1º de maio de 2016 -
url_title:
eurl_description:
, com base no Enhanced URLs enrichment, disponibilizados de forma geral. Os primeiros metadados de Enhanced URL começaram a aparecer em dezembro de 2014.
Perguntas frequentes (FAQ)
Perguntas gerais sobre a API de Post de pesquisa
O número de Posts que recebo com o endpoint data não corresponde ao número de Posts identificados pelo endpoint de contagem. Por que isso acontece?
O número de Posts que recebo com o endpoint data não corresponde ao número de Posts identificados pelo endpoint de contagem. Por que isso acontece?
Não recebi um Post que deveria corresponder à minha query. Por quê?
Não recebi um Post que deveria corresponder à minha query. Por quê?
- o Post que você esperava ver é de uma conta protegida
- o endpoint data considera todos os eventos de conformidade (o que significa que Posts excluídos, geos removidos, etc. não serão incluídos na resposta).
Minha query correspondeu a um Post, mas inclui uma palavra‑chave que eu neguei. Por que isso está acontecendo?
Minha query correspondeu a um Post, mas inclui uma palavra‑chave que eu neguei. Por que isso está acontecendo?
Existem bibliotecas que eu possa usar para começar a utilizar as APIs de Search Post?
Existem bibliotecas que eu possa usar para começar a utilizar as APIs de Search Post?
- Tweepy - bom para usar o produto padrão de busca/Posts (Python)
- X API - bom para usar as APIs padrão de Search Post (Python)
- Search Posts Python e Search Posts Ruby - duas boas ferramentas que podem ser usadas com as APIs de Search Post do Enterprise (e v2!)
Eu posso receber um volume de Posts menor do que o valor que defini como `maxResults` na minha solicitação ao endpoint de data?
Eu posso receber um volume de Posts menor do que o valor que defini como `maxResults` na minha solicitação ao endpoint de data?
maxResults
especificado ou após 30 dias.Por exemplo, se você tiver 800 Posts em um período de 30 dias, será necessário fazer duas solicitações para obter todos os resultados, pois o número máximo de Posts que pode ser retornado por solicitação é 500 (maxResults
). E se você tiver apenas 400 Posts no primeiro mês e 100 Posts no segundo, também será necessário usar duas solicitações para obter o conjunto completo de resultados, porque a paginação ocorre após um período de 30 dias, mesmo que a primeira solicitação retorne menos Posts do que o maxResults
especificado.Em que ordem os Posts correspondentes são retornados?
Em que ordem os Posts correspondentes são retornados?
fromDate
solicitado inicialmente.Como as edições de Posts impactam meu uso e faturamento?
Como as edições de Posts impactam meu uso e faturamento?
Enterprise
Estou interessado em saber mais sobre os preços da API de Search Post para Enterprise e em solicitar essa oferta. Como posso fazer isso?
Estou interessado em saber mais sobre os preços da API de Search Post para Enterprise e em solicitar essa oferta. Como posso fazer isso?
Como posso criar um conjunto de regras que atenda ao meu caso de uso?
Como posso criar um conjunto de regras que atenda ao meu caso de uso?
- Consulte nossa documentação das APIs de Search Post do Enterprise aqui
- Informações úteis sobre regras e filtragem podem ser encontradas aqui
- Informações úteis sobre o uso do endpoint data podem ser encontradas aqui
- Informações úteis sobre o uso do endpoint counts podem ser encontradas aqui
- Uma lista de operadores disponíveis pode ser encontrada aqui
Excedi meus limites/cotas de solicitações do mês, mas preciso acessar mais data — o que posso fazer?
Excedi meus limites/cotas de solicitações do mês, mas preciso acessar mais data — o que posso fazer?
Guia de solução de problemas de erros
- Verifique se você está usando os parâmetros corretos para cada endpoint (por exemplo, o campo
buckets
só pode ser usado com o endpoint de contagens, não com o endpoint de data) - Verifique novamente se os campos
:product
,:account_name
e:label
estão corretos. Você pode encontrar o seu:label
no GNIP Console (apenas para clientes Enterprise).
Referência da API
APIs de busca Enterprise
- 30-Day Search API - fornece Tweets publicados nos últimos 30 dias.
- Full-Archive Search API - fornece Tweets desde 2006, começando pelo primeiro Tweet publicado em março de 2006.
- Métodos para solicitar dados e contagens de Tweets
- Autenticação
- Paginação
- Parâmetros de requisição da API e exemplos de requisições
- Cargas JSON de resposta da API e exemplos de respostas
- Códigos de resposta HTTP
Métodos
https://gnip-api.x.com/search/
.
Método | Descrição |
---|---|
POST /search/:product/accounts/:account_name/:label | Recupera Tweets dos últimos 30 dias que correspondem à regra PowerTrack especificada. |
POST /search/:product/accounts/:account_name/:label/counts | Recupera o número de Tweets dos últimos 30 dias que correspondem à regra PowerTrack especificada. |
:product
indica o endpoint de pesquisa para o qual você está fazendo solicitações,30day
oufullarchive
.:account_name
é o nome (diferencia maiúsculas de minúsculas) associado à sua conta, conforme exibido em console.gnip.com:label
é o rótulo (diferencia maiúsculas de minúsculas) associado ao seu endpoint de pesquisa, conforme exibido em console.gnip.com
- Endpoint de dados: https://gnip-api.x.com/search/30day/accounts/TwitterDev/prod.json
- Endpoint de contagens: https://gnip-api.x.com/search/30day/accounts/TwitterDev/prod/counts.json
:product
, :account_name
e :label
. Para usar esses exemplos, certifique-se de atualizar as URLs com seus dados.
Autenticação
Comportamento de solicitação/resposta
fromDate
e toDate
, você pode solicitar qualquer período que a API suporte. A 30-Day search API fornece Tweets dos últimos 31 dias (mesmo sendo chamada de ‘30-Day’ API, ela disponibiliza 31 dias para permitir que os usuários façam solicitações de mês completo). A Full-Archive search API fornece Tweets desde o primeiro Tweet (21 de março de 2006). No entanto, uma única resposta será limitada ao menor valor entre o maxResults
que você especificar ou 31 dias. Se os dados correspondentes ou o seu intervalo de tempo excederem o maxResults
especificado ou 31 dias, você receberá um token ‘next’ que deve ser usado para paginar pelo restante do intervalo de tempo solicitado.
Por exemplo, suponha que você esteja usando a Full-Archive search e queira todos os Tweets que correspondam à sua query de 1º de janeiro de 2017 a 30 de junho de 2017. Você especificará esse período completo de seis meses na sua solicitação usando os parâmetros fromDate
e toDate
. A search API responderá com a primeira ‘página’ de Tweets, com a quantidade de Tweets correspondente ao seu parâmetro maxResults
(que, por padrão, é 100). Supondo que haja mais Tweets (e muito provavelmente haverá), a API também fornecerá um token ‘next’ que permite fazer uma solicitação para a próxima ‘página’ de data. Esse processo se repete até que a API não retorne um token ‘next’. Consulte a próxima seção para mais detalhes.
Paginação
Paginação de dados
maxResults
tem valor padrão de 100 e pode ser configurado entre 10 e 500. Se sua query corresponder a mais Tweets do que o valor de ‘maxResults’ usado na solicitação, a resposta incluirá um token ‘next’ (como um atributo JSON no nível raiz). Esse token ‘next’ é usado na solicitação subsequente para recuperar a próxima parte dos Tweets correspondentes a essa query (ou seja, a próxima “página”). Tokens ‘next’ continuarão sendo fornecidos até que você chegue à última “página” de resultados para essa query, quando nenhum token ‘next’ for retornado.
Para solicitar a próxima “página” de dados, você deve repetir exatamente a mesma query da solicitação original, incluindo os parâmetros query
, toDate
e fromDate
, se usados, e também incluir um parâmetro de solicitação ‘next’ definido com o valor retornado na resposta anterior. Isso pode ser feito com uma solicitação GET ou POST. No entanto, o parâmetro ‘next’ deve ser codificado na URL em solicitações GET.
Você pode continuar a enviar o elemento ‘next’ da sua query anterior até receber todos os Tweets do período coberto por ela. Quando você receber uma resposta que não inclua um elemento ‘next’, isso significa que você chegou à última página e não há dados adicionais disponíveis para a query e o intervalo de tempo especificados.
Paginação de contagens
Notas adicionais
- Ao usar fromDate ou toDate em uma solicitação de busca, você receberá apenas resultados dentro do intervalo de tempo especificado. Quando chegar ao último grupo de resultados desse intervalo, você não receberá um token ‘next’.
- O elemento ‘next’ pode ser usado com qualquer valor de maxResults entre 10 e 500 (valor padrão de 100). O maxResults determina quantos Tweets são retornados em cada resposta, mas não impede que você eventualmente obtenha todos os resultados.
- O elemento ‘next’ não expira. Várias solicitações usando a mesma query ‘next’ receberão os mesmos resultados, independentemente de quando a solicitação for feita.
- Ao paginar os resultados usando o parâmetro ‘next’, você pode encontrar duplicatas nos limites da query. Sua App deve ser tolerante a isso.
endpoint de data
POST /search/:product/:label
Padrão do endpoint:
Parâmetros da solicitação de dados
Parâmetros | Descrição | Obrigatório | Valor de exemplo |
---|---|---|---|
query | Equivalente a uma regra do PowerTrack, com até 2.048 caracteres (sem limite para o número de cláusulas positivas e negativas). Este parâmetro deve incluir TODAS as partes da regra do PowerTrack, incluindo todos os operadores; partes da regra não devem ser separadas em outros parâmetros da query. Observação: Nem todos os operadores do PowerTrack são compatíveis. Os operadores compatíveis estão listados AQUI. | Sim | (snow OR cold OR blizzard) weather |
tag | As tags podem ser usadas para segmentar regras e seus dados correspondentes em diferentes grupos lógicos. Se uma tag de regra for fornecida, ela será incluída no atributo ‘matching_rules’. Recomenda-se atribuir UUIDs específicos de regra às tags e manter os mapeamentos desejados no lado do cliente. | Não | 8HYG54ZGTU |
fromDate | O carimbo de data/hora UTC mais antigo (até 21/3/2006 com a pesquisa Full-Archive) a partir do qual os Tweets serão fornecidos. O carimbo tem granularidade de minuto e é inclusivo (isto é, 12:00 inclui o minuto 00). Especificado: Usar apenas fromDate, sem o parâmetro toDate, retornará resultados para a query retrocedendo no tempo a partir de now( ) até fromDate. Não especificado: Se fromDate não for especificado, a API retornará todos os resultados dos 30 dias anteriores a now( ) ou a toDate (se especificado). Se nem fromDate nem toDate forem usados, a API retornará todos os resultados dos 30 dias mais recentes, começando no momento da solicitação, retrocedendo. | Não | 201207220000 |
toDate | O carimbo de data/hora UTC mais recente até o qual os Tweets serão fornecidos. O carimbo tem granularidade de minuto e não é inclusivo (isto é, 11:59 não inclui o 59º minuto da hora). Especificado: Usar apenas toDate, sem o parâmetro fromDate, retornará os 30 dias mais recentes de dados anteriores a toDate. Não especificado: Se toDate não for especificado, a API retornará todos os resultados a partir de now( ) para a query, retrocedendo no tempo até fromDate. Se nem fromDate nem toDate forem usados, a API retornará todos os resultados de todo o índice de 30 dias, começando no momento da solicitação, retrocedendo. | Não | 201208220000 |
maxResults | O número máximo de resultados de pesquisa a serem retornados por uma solicitação. Um valor entre 10 e o limite do sistema (atualmente 500). Por padrão, a resposta retornará 100 resultados. | Não | 500 |
next | Este parâmetro é usado para obter a próxima “página” de resultados, conforme descrito AQUI. O valor usado com o parâmetro é extraído diretamente da resposta fornecida pela API e não deve ser modificado. | Não | NTcxODIyMDMyODMwMjU1MTA0 |
Detalhes adicionais
Período disponível | 30-Day: últimos 31 dias Full-Archive: 21 de março de 2006 - presente |
Formato de query | Equivalente a uma regra do PowerTrack, com até 2.048 caracteres (sem limites para o número de cláusulas positivas e negativas). Observação: Nem todos os operadores do PowerTrack são compatíveis. Consulte Available operators para a lista de operadores compatíveis. |
Limite de taxa | Os parceiros estarão sujeitos a limites com granularidade de minuto e segundo. O limite por minuto varia por parceiro, conforme especificado em contrato. No entanto, esses limites por minuto não devem ser usados em um único pico. Independentemente do seu limite por minuto, todos os parceiros estarão limitados a, no máximo, 20 solicitações por segundo, agregadas em todas as solicitações de data e/ou de contagem. |
Conformidade | Todos os data entregues pela Full-Archive Search API estão em conformidade no momento da entrega. |
Disponibilidade em tempo real | Os data ficam disponíveis no índice em até 30 segundos após a geração na plataforma X |
Exemplos de solicitações e respostas de dados
Exemplo de requisição POST
- Os parâmetros de uma requisição POST são enviados em um corpo no formato JSON, como mostrado abaixo.
- Todas as partes da regra do PowerTrack que está sendo consultada (por exemplo, palavras-chave e outros operadores, como bounding_box:) devem ser colocadas no parâmetro ‘query’.
- Não separe partes da regra em parâmetros distintos na URL da query.
Exemplo de solicitação GET
- Os parâmetros de uma solicitação GET são codificados na URL, usando a codificação padrão de URL.
- Todas as partes da regra do PowerTrack que estão sendo consultadas (por exemplo, palavras-chave, outros operadores como bounding_box:) devem ser colocadas no parâmetro ‘query’.
- Não divida partes da regra em parâmetros separados na URL da consulta.
Exemplos de respostas de dados
endpoint de contagem
/search/:stream/counts
Padrão do endpoint:
/search/fullarchive/accounts/:account_name/:label/counts.json
Este endpoint retorna contagens (volumes de dados) para a query especificada. Se nenhum período de tempo for informado, os parâmetros de tempo terão como padrão os últimos 30 dias. Os volumes de dados são retornados como um array com carimbo de data/hora em base diária, horária (padrão) ou por minuto.
Observação: Essa funcionalidade também pode ser obtida usando uma requisição GET, em vez de POST, codificando os parâmetros descritos abaixo na URL.
Parâmetros da solicitação de contagens
Parâmetros | Descrição | Obrigatório | Valor de exemplo |
---|---|---|---|
query | Equivale a uma regra do PowerTrack, com até 2.048 caracteres (sem limites para o número de cláusulas positivas e negativas). Este parâmetro deve incluir TODAS as partes da regra do PowerTrack, incluindo todos os operadores; partes da regra não devem ser separadas em outros parâmetros da query. Observação: Nem todos os operadores do PowerTrack são compatíveis. Consulte Operadores disponíveis para ver a lista de operadores compatíveis. | Sim | (snow OR cold OR blizzard) weather |
fromDate | O carimbo de data/hora em UTC mais antigo (desde 21/03/2006) a partir do qual os Tweets serão fornecidos. O carimbo de data/hora tem granularidade de minuto e é inclusivo (isto é, 12:00 inclui o minuto 00). Especificado: Ao usar apenas fromDate, sem o parâmetro toDate, a API fornecerá dados de contagem (volumes de dados) para a query retrocedendo no tempo, do momento atual até o fromDate. Se o fromDate for anterior a 31 dias a partir de agora, você receberá um next token para paginar sua solicitação. Não especificado: Se um fromDate não for especificado, a API fornecerá contagens (volumes de dados) para os 30 dias anteriores ao momento atual ou ao toDate (se especificado). Se nem o parâmetro fromDate nem o toDate for usado, a API fornecerá contagens (volumes de dados) para os 30 dias mais recentes, a partir do momento da solicitação, retrocedendo. | Não | 201207220000 |
toDate | O carimbo de data/hora em UTC mais recente até o qual os Tweets serão fornecidos. O carimbo de data/hora tem granularidade de minuto e não é inclusivo (isto é, 11:59 não inclui o 59º minuto da hora). Especificado: Ao usar apenas toDate, sem o parâmetro fromDate, serão fornecidas as contagens (volumes de dados) mais recentes para os 30 dias anteriores ao toDate. Não especificado: Se um toDate não for especificado, a API fornecerá contagens (volumes de dados) para a query retrocedendo no tempo até o fromDate. Se o fromDate for mais de 31 dias a partir de agora, você receberá um next token para paginar sua solicitação. Se nem o parâmetro fromDate nem o toDate for usado, a API fornecerá contagens (volumes de dados) para os 30 dias mais recentes, a partir do momento da solicitação, retrocedendo. | Não | 201208220000 |
bucket | A unidade de tempo para a qual os dados de contagem serão fornecidos. As contagens podem ser retornadas para cada dia, hora ou minuto no período solicitado. Por padrão, serão fornecidas contagens por hora. Opções: ‘day’, ‘hour’, ‘minute’ | Não | minute |
next | Este parâmetro é usado para obter a próxima ‘página’ de resultados, conforme descrito AQUI. O valor usado com o parâmetro é obtido diretamente da resposta fornecida pela API e não deve ser modificado. | Não | NTcxODIyMDMyODMwMjU1MTA0 |
Detalhes adicionais
Período disponível | 30-Day: últimos 31 dias Full-Archive: 21 de março de 2006 - presente |
Formato de query | Equivalente a uma regra PowerTrack, com até 2.048 caracteres. Observação: Nem todos os operadores PowerTrack são compatíveis. Consulte Available operators para a lista de operadores compatíveis. |
Limite de taxa | Os parceiros estarão sujeitos a limite de taxa com granularidade de minuto e segundo. O limite por minuto variará por parceiro, conforme especificado no seu contrato. No entanto, esses limites por minuto não devem ser utilizados em um único pico. Independentemente do seu limite por minuto, todos os parceiros estarão limitados a, no máximo, 20 solicitações por segundo, agregadas em todas as solicitações para data e/ou contagens. |
Precisão da contagem | As contagens fornecidas por este endpoint refletem o número de Tweets que ocorreram e não consideram eventos de conformidade posteriores (exclusões, scrub geos). Alguns Tweets contabilizados podem não estar disponíveis via endpoint de data devido a ações de conformidade do usuário. |
Exemplos de solicitações e respostas de contagem
Exemplo de solicitação POST
- Os parâmetros de uma solicitação POST são enviados em um corpo no formato JSON, conforme mostrado abaixo.
- Todos os elementos da regra do PowerTrack que estão sendo consultados (por exemplo, palavras-chave e outros operadores, como bounding_box:) devem ser colocados no parâmetro ‘query’.
- Não separe partes da regra como parâmetros distintos na URL da query.
Exemplo de solicitação GET
- Os parâmetros de uma solicitação GET são codificados na URL, usando a codificação padrão de URL
- Todas as partes da regra do PowerTrack que estão sendo consultadas (por exemplo, palavras-chave, outros operadores como bounding_box:) devem ser colocadas no parâmetro ‘query’
- Não separe partes da regra em parâmetros distintos na URL de consulta
Exemplos de respostas de contagem
Códigos de resposta HTTP
Status | Texto | Descrição |
---|---|---|
200 | OK | A solicitação foi bem-sucedida. A resposta JSON será semelhante ao seguinte: |
400 | Bad Request | Geralmente, essa resposta ocorre devido à presença de JSON inválido na solicitação ou quando a solicitação não envia nenhum payload JSON. |
401 | Unauthorized | A autenticação HTTP falhou devido a credenciais inválidas. Faça login em console.gnip.com com suas credenciais para garantir que você as esteja usando corretamente na solicitação. |
404 | Not Found | O recurso não foi encontrado na URL para a qual a solicitação foi enviada, provavelmente porque uma URL incorreta foi usada. |
422 | Unprocessable Entity | Retornado devido a parâmetros inválidos na query — por exemplo, regras PowerTrack inválidas. |
429 | Unknown Code | Seu App excedeu o limite de solicitações de conexão. A mensagem JSON correspondente será semelhante ao seguinte: |
500 | Internal Server Error | Ocorreu um erro no servidor. Tente sua solicitação novamente usando um padrão de recuo exponencial. |
502 | Proxy Error | Ocorreu um erro no servidor. Tente sua solicitação novamente usando um padrão de recuo exponencial. |
503 | Service Unavailable | Ocorreu um erro no servidor. Tente sua solicitação novamente usando um padrão de recuo exponencial. |