Migrate

Comparing Twitter API’s Search Tweets endpoints

The v2 Search Tweets endpoint will eventually replace the standard v1.1 search/tweets endpoint and enterprise Search API. If you have code, apps, or tools that use an older version of a Twitter search endpoint and are considering migrating to the newer Twitter API v2 endpoints, then this guide is for you. 

This page contains three comparison tables:

 

Recent search comparison

The following table compares the various types of recent search endpoints:

Description Standard v1.1 Twitter API v2
Host domain https://api.twitter.com https://api.twitter.com
Endpoint path /1.1/search/tweets.json /2/tweets/search/recent
Authentication OAuth 1.0a User Context
OAuth 2.0 App-Only

OAuth 1.0a User Context

OAuth 2.0 Authorization Code with PKCE

OAuth 2.0 App-Only

Timestamp format YYYYMMDD YYYY-MM-DDTHH:mm:ssZ
ISO 8601 / RFC 3339
Returns Tweets that are no older than 7 days 7 days
HTTP methods supported GET GET
Default request rate limits

180 requests per 15 min with OAuth 1.0a User Context

450 requests per 15 min with OAuth 2.0 App-Only

Basic:

60 requests per 15 min with OAuth 2.0 App-Only

60 requests per 15 min with OAuth 1.0a User Context

60 requests per 15 min with OAuth 2.0 Authorization Code with PKCE

Pro:

450 requests per 15 min with OAuth 2.0 App-Only

180 requests per 15 min with OAuth 1.0a User Context

180 requests per 15 min with OAuth 2.0 Authorization Code with PKCE

Offers fully unwound URLs  
Maximum Tweets per response (default) 100 (15) 100 (10)
Tweet JSON format Standard v1.1 format

Twitter API v2 format (determined by fields and expansions request parameters, not backward-compatible with v1.1 formats)

To learn more about how to migrate from the Standard v1.1 format to the Twitter API v2 format, please visit our data formats migration guide.

Supports selecting which fields return in the payload  
Supports requesting and receiving annotations  
Supports requesting specific metrics within Tweet object  
Supports the conversation_id operator and field  
Provides Tweet edit history
JSON key name for Tweet data array statuses data
JSON key name for pagination search_metadata.next_results meta.next_token
Supports navigating archive by time range
Time resolution of time-based requests day second
Timezone UTC UTC
Request parameters for navigating by time until start_time
end_time
Request parameters for navigating by Tweet ID since_id 
max_id
since_id 
until_id
Request parameter for pagination Provides URL-encoded query next_token
Requires the use of credentials from a developer App associated with a Project  

 

Full-archive search comparison

The following table compares the various types of full-archive search endpoints:

Description Premium v1.1 Enterprise Twitter API v2
Host domain https://api.twitter.com https://gnip-api.twitter.com https://api.twitter.com
Endpoint path /1.1/tweets/search/fullarchive/:label.json /search/fullarchive/accounts/:account_name/:label /2/tweets/search/all
Authentication OAuth 2.0 App-Only Basic auth OAuth 2.0 App-Only
Timestamp format YYYYMMDDHHMM YYYYMMDDHHMM YYYY-MM-DDTHH:mm:ssZ
ISO 8601 / RFC 3339
Returns Tweets that are no older than The full archive since March 2006 The full archive since March 2006 The full archive since March 2006
HTTP methods supported GET
POST
GET
POST
GET
Default request rate limits

Paid premium
60 requests per 1 min with OAuth 2.0 App-Only

Sandbox premium
30 requests per 1 min with OAuth 2.0 App-Only

Both
10 requests per 1 sec with OAuth 2.0 App-Only

The per minute rate limit will vary by partner as specified in your contract. 

20 requests per sec with Basic auth

300 requests per 15 min with OAuth 2.0 App-Only

1 requests per 1 sec with OAuth 2.0 App-Only

Offers fully unwound URLs
Tweets per response Maximum: 500
Default: 100
Maximum: 500
Default: 100
Maximum: 500
Default: 10
Tweet JSON format Native Enriched format Native Enriched or Activity Streams format
Twitter API v2 format (determined by fields and expansions request parameters)
Supports selecting which fields return in the payload    
Supports requesting and receiving annotations    
Supports requesting specific metrics within Tweet object    
Supports the conversation_id operator and field    
Provides Tweet edit history
JSON key name for Tweet data array results results data
JSON key name for pagination next next meta.next_token
Time resolution of time-based requests second second second
Timezone UTC UTC UTC
Supports navigating archive by Tweet ID    
Request parameters for navigation by time fromDate
toDate
fromDate
toDate
start_time
end_time
Request parameters for navigating by Tweet ID     since_id 
until_id
Request parameter for pagination next_token next_token next_token
Requires the use of credentials from a developer App associated with a Project that has Academic Research access    

Filtering operator comparison

The four different versions (standard, premium, enterprise, and v2) of search Tweets differ in which operators are available, and also have varying levels of operator availability within each version, which are explained below. 

Enterprise

  • There are no sub-tiers of enterprise operators
     

Twitter API v2

  • Free: Available when using any Project
  • Basic: Available when using any Project
  • Pro: Available when using a Project 
  • Enterprise: Available when using a Project 

You can learn more about each of these sets of operators in their respective guides:

Now that we understand the different operator levels within premium and Twitter API v2, here is the table that maps out operator availability for search Tweets (note that if the cell is left blank, the operator is not available):

 

Search operator Standard Premium Enterprise v2
keyword Available
q:keyword
Sandbox and paid
Available Basic & Pro
emoji Available
q:😄
Sandbox and paid Available Basic & Pro
“exact phrase” Available Sandbox and paid Available Basic & Pro
# Available Sandbox and paid Available Basic & Pro
$ Available   Available Pro
@ Available Sandbox and paid Available Basic & Pro
from: Available Sandbox and paid Available Basic & Pro
to: Available Sandbox and paid Available Basic & Pro
url: Available Sandbox and paid Available Basic & Pro
retweets_of:   Sandbox and paid Available Basic & Pro
context:       Basic & Pro
entity:       Basic & Pro - Only available with recent search
conversation_id:       Basic
place:   Sandbox and paid Available Pro
place_country:   Sandbox and paid Available Pro
point_radius: geocode parameter Sandbox and paid Available Pro
bounding_box:   Sandbox and paid Available Pro
is:retweet filter:retweets Paid only Available Basic & Pro
is:reply   Paid only Available Basic & Pro
is:quote   Sandbox and paid Available Basic & Pro
is:verified   Paid only Available Basic & Pro
-is:nullcast     Available Pro
has:hashtags   Paid only Available Basic & Pro
has:cashtags     Available Pro
has:links filter:links Sandbox and paid Available Basic & Pro
has:mentions   Sandbox and paid Available Basic & Pro
has:media filter:media Sandbox and paid Available Basic & Pro
has:images filter:images, filter:twimg Sandbox and paid Available Basic & Pro
has:videos filter:videos
filter:native_video
Sandbox and paid Available Basic & Pro
has:geo   Paid only Available Pro
lang: lang - can be used as an operator or a parameter Sandbox and paid Available Basic & Pro
has:profile_geo   Paid only Available  
profile_country   Paid only Available  
profile_locality   Paid only Available  
profile_region   Paid only Available  
proximity     Available  
:( Available      
:) Available      
? Available      
filter:periscope Available      
list: Available     Pro
filter:replies Available      
filter:pro_video Available      
filter:social Available      
filter:trusted Available      
filter:follows Available      
filter:has_engagement Available      
include:antisocial Available      
include:offensive_user Available      
include:antisocial_offensive_user Available      
include:sensitive_content Available      
source: Available      
min_replies: Available      
min_retweets: Available      
min_faves: Available      
card_name: Available      
card_domain: Available