Timelines
GET /2/users/:id/tweets
Returns Tweets composed by a single user, specified by the requested user ID. By default, the most recent 10 Tweets are returned per request with the default Tweet id
and text
. Using pagination, the most recent 3,200 Tweets can be retrieved.
Tweets retrieved through this endpoint will be counted towards the total Project level monthly Tweet cap. Monthly reset date and total monthly usage is shown in the developer portal dashboard.
Endpoint URL
https://api.twitter.com/2/users/:id/tweets
Authentication and rate limits
Authentication methods supported by this endpoint | |
---|---|
Rate limit | 1500 requests per 15-minute window (app auth) 900 requests per 15-minute window (user auth) |
Learn more about rate limits.
Path parameters
Name | Type | Description |
---|---|---|
id Required | string | Unique identifier of the Twitter account (user ID) for whom to return results. User ID can be referenced using the user/lookup endpoint. More information on Twitter IDs is here. |
Query parameters
Name | Type | Description |
---|---|---|
end_time Optional | date (ISO 8601) | YYYY-MM-DDTHH:mm:ssZ (ISO 8601/RFC 3339). The newest or most recent UTC timestamp from which the Tweets will be provided. Only the 3200 most recent Tweets are available. Timestamp is in second granularity and is inclusive (for example, 12:00:01 includes the first second of the minute). Minimum allowable time is 2010-11-06T00:00:01Z Please note that this parameter does not support a millisecond value. |
exclude Optional | enum (retweets , replies ) | Comma-separated list of the types of Tweets to exclude from the response. When exclude=retweets is used, the maximum historical Tweets returned is still 3200. When the exclude=replies parameter is used for any value, only the most recent 800 Tweets are available. |
expansions Optional | enum (attachments.poll_ids , attachments.media_keys , author_id , entities.mentions.username , geo.place_id , in_reply_to_user_id , referenced_tweets.id , referenced_tweets.id.author_id ) | Comma-separated list of expansions. Expansions enable requests to expand an ID into a full object in the includes response object. |
max_results Optional | integer | Specifies the number of Tweets to try and retrieve, up to a maximum of 100 per distinct request. By default, 10 results are returned if this parameter is not supplied. The minimum permitted value is 5. It is possible to receive less than the max_results per request throughout the pagination process. |
media.fields Optional | enum (duration_ms , height , media_key , preview_image_url , type , url , width , public_metrics , non_public_metrics , organic_metrics , promoted_metrics ) | Comma-separated list of additional fields to return in the media object. The response will contain the selected fields only if a Tweet contains media attachments. Note that non_public_metrics , organic_metrics , and promoted_metrics are only available for Tweets that have been created within the last 30 days. Make sure to not include a space between commas and fields. Make sure to not include a space between commas and fields. |
pagination_token Optional | string | This parameter is used to move forwards or backwards through 'pages' of results, based on the value of the next_token or previous_token in the response. The value used with the parameter is pulled directly from the response provided by the API, and should not be modified. |
place.fields Optional | enum (contained_within , country , country_code , full_name , geo , id , name , place_type ) | Comma-separated list of additional fields to return in the place object. The response will contain the selected fields only if location data is present in any of the response objects. Make sure to not include a space between commas and fields. |
poll.fields Optional | enum (duration_minutes , end_datetime , id , options , voting_status ) | Comma-separated list of additional fields to return in the poll object. The response will contain the selected fields only if a Tweet contains a poll. Make sure to not include a space between commas and fields. |
since_id Optional | string | Returns results with a Tweet ID greater than (that is, more recent than) the specified 'since' Tweet ID. Only the 3200 most recent Tweets are available. The result will exclude the since_id . If the limit of Tweets has occurred since the since_id , the since_id will be forced to the oldest ID available. |
start_time Optional | date (ISO 8601) | YYYY-MM-DDTHH:mm:ssZ (ISO 8601/RFC 3339). The oldest or earliest UTC timestamp from which the Tweets will be provided. Only the 3200 most recent Tweets are available. Timestamp is in second granularity and is inclusive (for example, 12:00:01 includes the first second of the minute). Minimum allowable time is 2010-11-06T00:00:00Z Please note that this parameter does not support a millisecond value. |
tweet.fields Optional | enum (attachments , author_id , context_annotations , conversation_id , created_at , entities , geo , id , in_reply_to_user_id , lang , non_public_metrics , public_metrics , organic_metrics , promoted_metrics , possibly_sensitive , referenced_tweets , reply_settings , source , text , withheld ) | Comma-separated list of additional fields to return in the Tweet object. By default, the endpoint only returns id and text . Note that non_public_metrics , organic_metrics , and promoted_metrics are only available for Tweets that have been created within the last 30 days. Make sure to not include a space between commas and fields. |
until_id Optional | string | Returns results with a Tweet ID less less than (that is, older than) the specified 'until' Tweet ID. Only the 3200 most recent Tweets are available. The result will exclude the until_id . If the limit of Tweets has occurred since the until_id , the until_id will be forced to the most recent ID available. |
user.fields Optional | enum (created_at , description , entities , id , location , name , pinned_tweet_id , profile_image_url , protected , public_metrics , url , username , verified , withheld ) | Comma-separated list of additional fields to return in the user object. By default, the endpoint does not return any user field. To use this parameter, you must include the author_id expansion parameter in the request. Make sure to not include a space between commas and fields. |
Example requests
- cURL (default fields)
- cURL (optional fields)
- cURL (all fields)
curl "https://api.twitter.com/2/users/2244994945/tweets" -H "Authorization: Bearer $BEARER_TOKEN"
curl "https://api.twitter.com/2/users/2244994945/tweets?tweet.fields=created_at,author_id,conversation_id,public_metrics,context_annotations&user.fields=username&expansions=author_id&max_results=5" -H "Authorization: Bearer $BEARER_TOKEN"
curl "https://api.twitter.com/2/users/2244994945/tweets?tweet.fields=attachments,author_id,context_annotations,conversation_id,created_at,entities,geo,id,in_reply_to_user_id,lang,possibly_sensitive,public_metrics,referenced_tweets,reply_settings,source,text,withheld&user.fields=created_at,description,entities,id,location,name,pinned_tweet_id,profile_image_url,protected,public_metrics,url,username,verified,withheld&expansions=author_id,referenced_tweets.id,referenced_tweets.id.author_id,entities.mentions.username,attachments.poll_ids,attachments.media_keys,in_reply_to_user_id,geo.place_id&place.fields=contained_within,country,country_code,full_name,geo,id,name,place_type&poll.fields=duration_minutes,end_datetime,id,options,voting_status&max_results=5" -H "Authorization: Bearer $BEARER_TOKEN"
Example responses
- Default fields
- Optional fields
- All fields
{
"data": [
{
"id": "1338971066773905408",
"text": "💡 Using Twitter data for academic research? Join our next livestream this Friday @ 9am PT on https://t.co/GrtBOXh5Y1!\n \n@SuhemParack will show how to get started with recent search & filtered stream endpoints on the #TwitterAPI v2, the new Tweet payload, annotations, & more. https://t.co/IraD2Z7wEg"
},
{
"id": "1338923691497959425",
"text": "📈 Live now with @jessicagarson and @i_am_daniele! https://t.co/Y1AFzsTTxb"
},
{
"id": "1337498609819021312",
"text": "Thanks to everyone who tuned in today to make music with the #TwitterAPI!\n\nNext week on Twitch - @iamdaniele and @jessicagarson will show you how to integrate the #TwitterAPI and Google Sheets 📈. Tuesday, Dec 15th at 2pm ET. \n\nhttps://t.co/SQziic6eyp"
},
{
"id": "1337464482654793740",
"text": "🎧💻 We're live! Tune in! 🎶 https://t.co/FSYP4rJdHr"
},
{
"id": "1337122535188652033",
"text": "👂We want to hear what you think about our plans. As we continue to build our new product tracks, your feedback is essential to shaping the future of the Twitter API. Share your thoughts on this survey: https://t.co/dkIqFGPji7"
},
{
"id": "1337122534173663235",
"text": "Is 2020 over yet?\nDespite everything that happened this year, thousands of you still made the time to learn, play, and build incredible things on the new #TwitterAPI.\nWe want to share some of your stories and give you a preview of what’s to come next year.\nhttps://t.co/VpOKT22WgF"
},
{
"id": "1336463248510623745",
"text": "🎧 Headphones on: watch @jessicagarson build an interactive app to write music using SuperCollider, Python, FoxDot, and the new Twitter API. Streaming Friday 1:30 ET on our new Twitch channel 🎶💻 https://t.co/SQziic6eyp"
},
{
"id": "1334987486343299072",
"text": "console.log('Happy birthday, JavaScript!');"
},
{
"id": "1334920270587584521",
"text": "Live now!\nJoin the first ever @Twitch stream from TwitterDev https://t.co/x33fiVIi7B"
},
{
"id": "1334564488884862976",
"text": "Before we release new #TwitterAPI endpoints, we let developers test drive a prototype of our intended design. @i_am_daniele takes you behind the scenes of an endpoint in the making. https://t.co/NNTDnciwNq"
}
],
"meta": {
"oldest_id": "1334564488884862976",
"newest_id": "1338971066773905408",
"result_count": 10,
"next_token": "7140dibdnow9c7btw3w29grvxfcgvpb9n9coehpk7xz5i"
}
}
{
"data": [
{
"author_id": "2244994945",
"conversation_id": "1338971066773905408",
"text": "💡 Using Twitter data for academic research? Join our next livestream this Friday @ 9am PT on https://t.co/GrtBOXh5Y1!\n \n@SuhemParack will show how to get started with recent search & filtered stream endpoints on the #TwitterAPI v2, the new Tweet payload, annotations, & more. https://t.co/IraD2Z7wEg",
"context_annotations": [
{
"domain": {
"id": "46",
"name": "Brand Category",
"description": "Categories within Brand Verticals that narrow down the scope of Brands"
},
"entity": {
"id": "781974596752842752",
"name": "Services"
}
},
{
"domain": {
"id": "47",
"name": "Brand",
"description": "Brands and Companies"
},
"entity": {
"id": "10045225402",
"name": "Twitter"
}
}
],
"public_metrics": {
"retweet_count": 10,
"reply_count": 1,
"like_count": 41,
"quote_count": 4
},
"id": "1338971066773905408",
"created_at": "2020-12-15T22:15:53.000Z"
},
{
"author_id": "2244994945",
"conversation_id": "1338923691497959425",
"text": "📈 Live now with @jessicagarson and @i_am_daniele! https://t.co/Y1AFzsTTxb",
"context_annotations": [
{
"domain": {
"id": "46",
"name": "Brand Category",
"description": "Categories within Brand Verticals that narrow down the scope of Brands"
},
"entity": {
"id": "781974596752842752",
"name": "Services"
}
},
{
"domain": {
"id": "47",
"name": "Brand",
"description": "Brands and Companies"
},
"entity": {
"id": "1054826545758396416",
"name": "Twitch",
"description": "Twitch"
}
},
{
"domain": {
"id": "46",
"name": "Brand Category",
"description": "Categories within Brand Verticals that narrow down the scope of Brands"
},
"entity": {
"id": "781974596752842752",
"name": "Services"
}
},
{
"domain": {
"id": "47",
"name": "Brand",
"description": "Brands and Companies"
},
"entity": {
"id": "10026378521",
"name": "Google "
}
}
],
"public_metrics": {
"retweet_count": 3,
"reply_count": 0,
"like_count": 12,
"quote_count": 1
},
"id": "1338923691497959425",
"created_at": "2020-12-15T19:07:38.000Z"
},
{
"author_id": "2244994945",
"conversation_id": "1337498609819021312",
"text": "Thanks to everyone who tuned in today to make music with the #TwitterAPI!\n\nNext week on Twitch - @iamdaniele and @jessicagarson will show you how to integrate the #TwitterAPI and Google Sheets 📈. Tuesday, Dec 15th at 2pm ET. \n\nhttps://t.co/SQziic6eyp",
"context_annotations": [
{
"domain": {
"id": "46",
"name": "Brand Category",
"description": "Categories within Brand Verticals that narrow down the scope of Brands"
},
"entity": {
"id": "781974596752842752",
"name": "Services"
}
},
{
"domain": {
"id": "47",
"name": "Brand",
"description": "Brands and Companies"
},
"entity": {
"id": "10026378521",
"name": "Google "
}
}
],
"public_metrics": {
"retweet_count": 6,
"reply_count": 1,
"like_count": 34,
"quote_count": 3
},
"id": "1337498609819021312",
"created_at": "2020-12-11T20:44:52.000Z"
},
{
"author_id": "2244994945",
"conversation_id": "1337464482654793740",
"text": "🎧💻 We're live! Tune in! 🎶 https://t.co/FSYP4rJdHr",
"context_annotations": [
{
"domain": {
"id": "46",
"name": "Brand Category",
"description": "Categories within Brand Verticals that narrow down the scope of Brands"
},
"entity": {
"id": "781974596752842752",
"name": "Services"
}
},
{
"domain": {
"id": "47",
"name": "Brand",
"description": "Brands and Companies"
},
"entity": {
"id": "10045225402",
"name": "Twitter"
}
},
{
"domain": {
"id": "47",
"name": "Brand",
"description": "Brands and Companies"
},
"entity": {
"id": "1054826545758396416",
"name": "Twitch",
"description": "Twitch"
}
}
],
"public_metrics": {
"retweet_count": 5,
"reply_count": 0,
"like_count": 32,
"quote_count": 0
},
"id": "1337464482654793740",
"created_at": "2020-12-11T18:29:16.000Z"
},
{
"author_id": "2244994945",
"conversation_id": "1337122534173663235",
"text": "👂We want to hear what you think about our plans. As we continue to build our new product tracks, your feedback is essential to shaping the future of the Twitter API. Share your thoughts on this survey: https://t.co/dkIqFGPji7",
"context_annotations": [
{
"domain": {
"id": "46",
"name": "Brand Category",
"description": "Categories within Brand Verticals that narrow down the scope of Brands"
},
"entity": {
"id": "781974596752842752",
"name": "Services"
}
},
{
"domain": {
"id": "47",
"name": "Brand",
"description": "Brands and Companies"
},
"entity": {
"id": "10045225402",
"name": "Twitter"
}
}
],
"public_metrics": {
"retweet_count": 6,
"reply_count": 2,
"like_count": 20,
"quote_count": 0
},
"id": "1337122535188652033",
"created_at": "2020-12-10T19:50:29.000Z"
}
],
"includes": {
"users": [
{
"id": "2244994945",
"name": "Twitter Dev",
"username": "TwitterDev"
}
]
},
"meta": {
"oldest_id": "1337122535188652033",
"newest_id": "1338971066773905408",
"result_count": 5,
"next_token": "7140dibdnow9c7btw3w29n4v1mtag9kegr0gr7y26pnw3"
}
}
{
"data": [
{
"text": "💡 Using Twitter data for academic research? Join our next livestream this Friday @ 9am PT on https://t.co/GrtBOXh5Y1!\n \n@SuhemParack will show how to get started with recent search & filtered stream endpoints on the #TwitterAPI v2, the new Tweet payload, annotations, & more. https://t.co/IraD2Z7wEg",
"created_at": "2020-12-15T22:15:53.000Z",
"context_annotations": [
{
"domain": {
"id": "46",
"name": "Brand Category",
"description": "Categories within Brand Verticals that narrow down the scope of Brands"
},
"entity": {
"id": "781974596752842752",
"name": "Services"
}
},
{
"domain": {
"id": "47",
"name": "Brand",
"description": "Brands and Companies"
},
"entity": {
"id": "10045225402",
"name": "Twitter"
}
}
],
"attachments": {
"media_keys": [
"3_1338970448516632576"
]
},
"entities": {
"annotations": [
{
"start": 9,
"end": 15,
"probability": 0.567,
"type": "Product",
"normalized_text": "Twitter"
}
],
"hashtags": [
{
"start": 220,
"end": 231,
"tag": "TwitterAPI"
}
],
"urls": [
{
"start": 93,
"end": 116,
"url": "https://t.co/GrtBOXh5Y1",
"expanded_url": "http://twitch.tv/twitterdev",
"display_url": "twitch.tv/twitterdev"
},
{
"start": 284,
"end": 307,
"url": "https://t.co/IraD2Z7wEg",
"expanded_url": "https://twitter.com/TwitterDev/status/1338971066773905408/photo/1",
"display_url": "pic.twitter.com/IraD2Z7wEg"
}
],
"mentions": [
{
"start": 120,
"end": 132,
"username": "suhemparack"
}
]
},
"public_metrics": {
"retweet_count": 10,
"reply_count": 1,
"like_count": 41,
"quote_count": 4
},
"reply_settings": "everyone",
"author_id": "2244994945",
"lang": "en",
"id": "1338971066773905408",
"conversation_id": "1338971066773905408",
"possibly_sensitive": false,
"source": "Twitter Web App"
},
{
"text": "📈 Live now with @jessicagarson and @i_am_daniele! https://t.co/Y1AFzsTTxb",
"created_at": "2020-12-15T19:07:38.000Z",
"context_annotations": [
{
"domain": {
"id": "46",
"name": "Brand Category",
"description": "Categories within Brand Verticals that narrow down the scope of Brands"
},
"entity": {
"id": "781974596752842752",
"name": "Services"
}
},
{
"domain": {
"id": "47",
"name": "Brand",
"description": "Brands and Companies"
},
"entity": {
"id": "1054826545758396416",
"name": "Twitch",
"description": "Twitch"
}
},
{
"domain": {
"id": "46",
"name": "Brand Category",
"description": "Categories within Brand Verticals that narrow down the scope of Brands"
},
"entity": {
"id": "781974596752842752",
"name": "Services"
}
},
{
"domain": {
"id": "47",
"name": "Brand",
"description": "Brands and Companies"
},
"entity": {
"id": "10026378521",
"name": "Google "
}
}
],
"public_metrics": {
"retweet_count": 3,
"reply_count": 0,
"like_count": 12,
"quote_count": 1
},
"reply_settings": "everyone",
"referenced_tweets": [
{
"type": "quoted",
"id": "1337498609819021312"
}
],
"author_id": "2244994945",
"lang": "en",
"id": "1338923691497959425",
"conversation_id": "1338923691497959425",
"possibly_sensitive": false,
"source": "Twitter Web App",
"entities": {
"urls": [
{
"start": 50,
"end": 73,
"url": "https://t.co/Y1AFzsTTxb",
"expanded_url": "https://twitter.com/TwitterDev/status/1337498609819021312",
"display_url": "twitter.com/TwitterDev/sta…"
}
],
"mentions": [
{
"start": 16,
"end": 30,
"username": "jessicagarson"
},
{
"start": 35,
"end": 48,
"username": "i_am_daniele"
}
]
}
},
{
"text": "Thanks to everyone who tuned in today to make music with the #TwitterAPI!\n\nNext week on Twitch - @iamdaniele and @jessicagarson will show you how to integrate the #TwitterAPI and Google Sheets 📈. Tuesday, Dec 15th at 2pm ET. \n\nhttps://t.co/SQziic6eyp",
"created_at": "2020-12-11T20:44:52.000Z",
"context_annotations": [
{
"domain": {
"id": "46",
"name": "Brand Category",
"description": "Categories within Brand Verticals that narrow down the scope of Brands"
},
"entity": {
"id": "781974596752842752",
"name": "Services"
}
},
{
"domain": {
"id": "47",
"name": "Brand",
"description": "Brands and Companies"
},
"entity": {
"id": "10026378521",
"name": "Google "
}
}
],
"entities": {
"annotations": [
{
"start": 179,
"end": 191,
"probability": 0.4468,
"type": "Product",
"normalized_text": "Google Sheets"
}
],
"hashtags": [
{
"start": 61,
"end": 72,
"tag": "TwitterAPI"
},
{
"start": 163,
"end": 174,
"tag": "TwitterAPI"
}
],
"urls": [
{
"start": 227,
"end": 250,
"url": "https://t.co/SQziic6eyp",
"expanded_url": "https://www.twitch.tv/twitterdev",
"display_url": "twitch.tv/twitterdev"
}
],
"mentions": [
{
"start": 97,
"end": 108,
"username": "iamdaniele"
},
{
"start": 113,
"end": 127,
"username": "jessicagarson"
}
]
},
"public_metrics": {
"retweet_count": 6,
"reply_count": 1,
"like_count": 34,
"quote_count": 3
},
"reply_settings": "everyone",
"author_id": "2244994945",
"lang": "en",
"id": "1337498609819021312",
"conversation_id": "1337498609819021312",
"possibly_sensitive": false,
"source": "Twitter Web App"
},
{
"text": "🎧💻 We're live! Tune in! 🎶 https://t.co/FSYP4rJdHr",
"created_at": "2020-12-11T18:29:16.000Z",
"context_annotations": [
{
"domain": {
"id": "46",
"name": "Brand Category",
"description": "Categories within Brand Verticals that narrow down the scope of Brands"
},
"entity": {
"id": "781974596752842752",
"name": "Services"
}
},
{
"domain": {
"id": "47",
"name": "Brand",
"description": "Brands and Companies"
},
"entity": {
"id": "10045225402",
"name": "Twitter"
}
},
{
"domain": {
"id": "47",
"name": "Brand",
"description": "Brands and Companies"
},
"entity": {
"id": "1054826545758396416",
"name": "Twitch",
"description": "Twitch"
}
}
],
"public_metrics": {
"retweet_count": 5,
"reply_count": 0,
"like_count": 32,
"quote_count": 0
},
"reply_settings": "everyone",
"referenced_tweets": [
{
"type": "quoted",
"id": "1336463248510623745"
}
],
"author_id": "2244994945",
"lang": "en",
"id": "1337464482654793740",
"conversation_id": "1337464482654793740",
"possibly_sensitive": false,
"source": "Twitter Web App",
"entities": {
"urls": [
{
"start": 26,
"end": 49,
"url": "https://t.co/FSYP4rJdHr",
"expanded_url": "https://twitter.com/TwitterDev/status/1336463248510623745",
"display_url": "twitter.com/TwitterDev/sta…"
}
]
}
},
{
"text": "👂We want to hear what you think about our plans. As we continue to build our new product tracks, your feedback is essential to shaping the future of the Twitter API. Share your thoughts on this survey: https://t.co/dkIqFGPji7",
"in_reply_to_user_id": "2244994945",
"created_at": "2020-12-10T19:50:29.000Z",
"context_annotations": [
{
"domain": {
"id": "46",
"name": "Brand Category",
"description": "Categories within Brand Verticals that narrow down the scope of Brands"
},
"entity": {
"id": "781974596752842752",
"name": "Services"
}
},
{
"domain": {
"id": "47",
"name": "Brand",
"description": "Brands and Companies"
},
"entity": {
"id": "10045225402",
"name": "Twitter"
}
}
],
"entities": {
"annotations": [
{
"start": 154,
"end": 164,
"probability": 0.6141,
"type": "Product",
"normalized_text": "Twitter API"
}
],
"urls": [
{
"start": 202,
"end": 225,
"url": "https://t.co/dkIqFGPji7",
"expanded_url": "https://developer.twitter.com/en/products/twitter-api/survey",
"display_url": "developer.twitter.com/en/products/tw…"
}
]
},
"public_metrics": {
"retweet_count": 6,
"reply_count": 2,
"like_count": 20,
"quote_count": 0
},
"reply_settings": "everyone",
"referenced_tweets": [
{
"type": "replied_to",
"id": "1337122534173663235"
}
],
"author_id": "2244994945",
"lang": "en",
"id": "1337122535188652033",
"conversation_id": "1337122534173663235",
"possibly_sensitive": false,
"source": "Twitter Web App"
}
],
"includes": {
"media": [
{
"media_key": "3_1338970448516632576",
"type": "photo"
}
],
"users": [
{
"profile_image_url": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
"name": "Twitter Dev",
"id": "2244994945",
"url": "https://t.co/3ZX3TNiZCY",
"pinned_tweet_id": "1293593516040269825",
"public_metrics": {
"followers_count": 514245,
"following_count": 2041,
"tweet_count": 3641,
"listed_count": 1676
},
"username": "TwitterDev",
"location": "127.0.0.1",
"created_at": "2013-12-14T04:35:55.000Z",
"protected": false,
"entities": {
"url": {
"urls": [
{
"start": 0,
"end": 23,
"url": "https://t.co/3ZX3TNiZCY",
"expanded_url": "https://developer.twitter.com/en/community",
"display_url": "developer.twitter.com/en/community"
}
]
},
"description": {
"hashtags": [
{
"start": 17,
"end": 28,
"tag": "TwitterDev"
},
{
"start": 105,
"end": 116,
"tag": "TwitterAPI"
}
]
}
},
"verified": true,
"description": "The voice of the #TwitterDev team and your official source for updates, news, and events, related to the #TwitterAPI."
},
{
"profile_image_url": "https://pbs.twimg.com/profile_images/1230703695051935747/TbQKe91L_normal.jpg",
"name": "Suhem Parack",
"id": "857699969263964161",
"url": "https://t.co/8IkCzClPCz",
"pinned_tweet_id": "1296498078233571329",
"public_metrics": {
"followers_count": 757,
"following_count": 548,
"tweet_count": 469,
"listed_count": 12
},
"username": "suhemparack",
"location": "Seattle, WA",
"created_at": "2017-04-27T20:56:22.000Z",
"protected": false,
"entities": {
"url": {
"urls": [
{
"start": 0,
"end": 23,
"url": "https://t.co/8IkCzClPCz",
"expanded_url": "https://developer.twitter.com",
"display_url": "developer.twitter.com"
}
]
},
"description": {
"mentions": [
{
"start": 42,
"end": 50,
"username": "Twitter"
}
]
}
},
"verified": false,
"description": "Developer Relations for Academic Research @Twitter. Talk to me about research with Twitter data. Previously: Amazon Alexa. Views are my own"
},
{
"profile_image_url": "https://pbs.twimg.com/profile_images/1181711700216680448/N2YeqHLy_normal.jpg",
"name": "Jessica Garson",
"id": "15772978",
"url": "https://t.co/7o2d6oAKln",
"public_metrics": {
"followers_count": 3305,
"following_count": 2614,
"tweet_count": 6740,
"listed_count": 123
},
"username": "jessicagarson",
"location": "Brooklyn, NY",
"created_at": "2008-08-08T02:16:23.000Z",
"protected": false,
"entities": {
"url": {
"urls": [
{
"start": 0,
"end": 23,
"url": "https://t.co/7o2d6oAKln",
"expanded_url": "http://github.com/JessicaGarson",
"display_url": "github.com/JessicaGarson"
}
]
},
"description": {
"mentions": [
{
"start": 19,
"end": 27,
"username": "Twitter"
}
]
}
},
"verified": false,
"description": "Developer Advocate @Twitter. Python programmer. Noted thought leader on vegan snacks. Makes music as Messica Arson."
},
{
"profile_image_url": "https://pbs.twimg.com/profile_images/1318408175603703809/EdaIh78Q_normal.jpg",
"name": "Daniele",
"id": "1020108704811606016",
"url": "https://t.co/9F4SfLuXSg",
"public_metrics": {
"followers_count": 633,
"following_count": 518,
"tweet_count": 1059,
"listed_count": 22
},
"username": "i_am_daniele",
"location": "🏳️🌈✊🏽✊🏾✊🏿",
"created_at": "2018-07-20T00:50:42.000Z",
"protected": false,
"entities": {
"url": {
"urls": [
{
"start": 0,
"end": 23,
"url": "https://t.co/9F4SfLuXSg",
"expanded_url": "https://pronouns.me/he",
"display_url": "pronouns.me/he"
}
]
},
"description": {
"hashtags": [
{
"start": 0,
"end": 7,
"tag": "DevRel"
}
],
"mentions": [
{
"start": 8,
"end": 16,
"username": "Twitter"
}
]
}
},
"verified": false,
"description": "#DevRel @Twitter in the tweets, cat mama in the fleets"
},
{
"profile_image_url": "https://pbs.twimg.com/profile_images/764570965200232448/cS6OYYXg_normal.jpg",
"name": "Dani",
"id": "1932869702",
"url": "",
"public_metrics": {
"followers_count": 61,
"following_count": 46,
"tweet_count": 1266,
"listed_count": 0
},
"username": "iamdaniele",
"created_at": "2013-10-04T03:08:50.000Z",
"protected": false,
"verified": false,
"description": "linda e bem acompanhada/ snap: itsdanimaciel"
}
],
"tweets": [
{
"text": "Thanks to everyone who tuned in today to make music with the #TwitterAPI!\n\nNext week on Twitch - @iamdaniele and @jessicagarson will show you how to integrate the #TwitterAPI and Google Sheets 📈. Tuesday, Dec 15th at 2pm ET. \n\nhttps://t.co/SQziic6eyp",
"created_at": "2020-12-11T20:44:52.000Z",
"context_annotations": [
{
"domain": {
"id": "46",
"name": "Brand Category",
"description": "Categories within Brand Verticals that narrow down the scope of Brands"
},
"entity": {
"id": "781974596752842752",
"name": "Services"
}
},
{
"domain": {
"id": "47",
"name": "Brand",
"description": "Brands and Companies"
},
"entity": {
"id": "10026378521",
"name": "Google "
}
}
],
"entities": {
"annotations": [
{
"start": 179,
"end": 191,
"probability": 0.4468,
"type": "Product",
"normalized_text": "Google Sheets"
}
],
"hashtags": [
{
"start": 61,
"end": 72,
"tag": "TwitterAPI"
},
{
"start": 163,
"end": 174,
"tag": "TwitterAPI"
}
],
"urls": [
{
"start": 227,
"end": 250,
"url": "https://t.co/SQziic6eyp",
"expanded_url": "https://www.twitch.tv/twitterdev",
"display_url": "twitch.tv/twitterdev",
"images": [
{
"url": "https://pbs.twimg.com/news_img/1339044416074489857/nBJBqyVp?format=png&name=orig",
"width": 300,
"height": 300
},
{
"url": "https://pbs.twimg.com/news_img/1339044416074489857/nBJBqyVp?format=png&name=150x150",
"width": 150,
"height": 150
}
],
"status": 200,
"title": "TwitterDev - Twitch",
"description": "Brought to you by Twitter's Developer Relations team",
"unwound_url": "https://www.twitch.tv/twitterdev"
}
],
"mentions": [
{
"start": 97,
"end": 108,
"username": "iamdaniele"
},
{
"start": 113,
"end": 127,
"username": "jessicagarson"
}
]
},
"public_metrics": {
"retweet_count": 6,
"reply_count": 1,
"like_count": 34,
"quote_count": 3
},
"reply_settings": "everyone",
"author_id": "2244994945",
"lang": "en",
"id": "1337498609819021312",
"conversation_id": "1337498609819021312",
"possibly_sensitive": false,
"source": "Twitter Web App"
},
{
"text": "🎧 Headphones on: watch @jessicagarson build an interactive app to write music using SuperCollider, Python, FoxDot, and the new Twitter API. Streaming Friday 1:30 ET on our new Twitch channel 🎶💻 https://t.co/SQziic6eyp",
"created_at": "2020-12-09T00:10:43.000Z",
"context_annotations": [
{
"domain": {
"id": "46",
"name": "Brand Category",
"description": "Categories within Brand Verticals that narrow down the scope of Brands"
},
"entity": {
"id": "781974596752842752",
"name": "Services"
}
},
{
"domain": {
"id": "47",
"name": "Brand",
"description": "Brands and Companies"
},
"entity": {
"id": "10045225402",
"name": "Twitter"
}
},
{
"domain": {
"id": "47",
"name": "Brand",
"description": "Brands and Companies"
},
"entity": {
"id": "1054826545758396416",
"name": "Twitch",
"description": "Twitch"
}
}
],
"entities": {
"annotations": [
{
"start": 85,
"end": 97,
"probability": 0.4602,
"type": "Product",
"normalized_text": "SuperCollider"
},
{
"start": 108,
"end": 113,
"probability": 0.312,
"type": "Person",
"normalized_text": "FoxDot"
},
{
"start": 128,
"end": 138,
"probability": 0.4936,
"type": "Product",
"normalized_text": "Twitter API"
}
],
"urls": [
{
"start": 194,
"end": 217,
"url": "https://t.co/SQziic6eyp",
"expanded_url": "https://www.twitch.tv/twitterdev",
"display_url": "twitch.tv/twitterdev",
"images": [
{
"url": "https://pbs.twimg.com/news_img/1339044416074489857/nBJBqyVp?format=png&name=orig",
"width": 300,
"height": 300
},
{
"url": "https://pbs.twimg.com/news_img/1339044416074489857/nBJBqyVp?format=png&name=150x150",
"width": 150,
"height": 150
}
],
"status": 200,
"title": "TwitterDev - Twitch",
"description": "Brought to you by Twitter's Developer Relations team",
"unwound_url": "https://www.twitch.tv/twitterdev"
}
],
"mentions": [
{
"start": 23,
"end": 37,
"username": "jessicagarson"
}
]
},
"public_metrics": {
"retweet_count": 8,
"reply_count": 8,
"like_count": 42,
"quote_count": 12
},
"reply_settings": "everyone",
"author_id": "2244994945",
"lang": "en",
"id": "1336463248510623745",
"conversation_id": "1336463248510623745",
"possibly_sensitive": false,
"source": "Twitter Web App"
},
{
"text": "Is 2020 over yet?\nDespite everything that happened this year, thousands of you still made the time to learn, play, and build incredible things on the new #TwitterAPI.\nWe want to share some of your stories and give you a preview of what’s to come next year.\nhttps://t.co/VpOKT22WgF",
"created_at": "2020-12-10T19:50:29.000Z",
"public_metrics": {
"retweet_count": 19,
"reply_count": 4,
"like_count": 60,
"quote_count": 12
},
"entities": {
"hashtags": [
{
"start": 154,
"end": 165,
"tag": "TwitterAPI"
}
],
"urls": [
{
"start": 257,
"end": 280,
"url": "https://t.co/VpOKT22WgF",
"expanded_url": "https://blog.twitter.com/developer/en_us/topics/community/2020/future-of-twitter-developer-platform.html",
"display_url": "blog.twitter.com/developer/en_u…",
"images": [
{
"url": "https://pbs.twimg.com/news_img/1337122535075426307/_H-rQ8ha?format=jpg&name=orig",
"width": 1200,
"height": 627
},
{
"url": "https://pbs.twimg.com/news_img/1337122535075426307/_H-rQ8ha?format=jpg&name=150x150",
"width": 150,
"height": 150
}
],
"status": 200,
"title": "Looking to the future of the Twitter developer platform",
"description": "A look back at 2020 and a look to the future of the Twitter developer platform",
"unwound_url": "https://blog.twitter.com/developer/en_us/topics/community/2020/future-of-twitter-developer-platform.html"
}
]
},
"reply_settings": "everyone",
"author_id": "2244994945",
"lang": "en",
"id": "1337122534173663235",
"conversation_id": "1337122534173663235",
"possibly_sensitive": false,
"source": "Twitter Web App"
}
]
},
"meta": {
"oldest_id": "1337122535188652033",
"newest_id": "1338971066773905408",
"result_count": 5,
"next_token": "7140dibdnow9c7btw3w29n4v1mtag9kegr0gr7y26pnw3"
}
}
Response fields
Name | Type | Description |
---|---|---|
id Default | string | Unique identifier of this Tweet. This is returned as a string in order to avoid complications with languages and tools that cannot handle large integers. |
text Default | string | The content of the Tweet. To return this field, add tweet.fields=text in the request's query parameter. |
created_at | date (ISO 8601) | Creation time of the Tweet. For example: 2020-12-10T20:00:10.000Z To return this field, add tweet.fields=created_at in the request's query parameter. |
author_id | string | Unique identifier of this user. This is returned as a string in order to avoid complications with languages and tools that cannot handle large integers. You can obtain the expanded object in includes.users by adding expansions=author_id in the request's query parameter. |
conversation_id | string | The Tweet ID of the original Tweet of the conversation (which includes direct replies, replies of replies). To return this field, add tweet.fields=conversation_id in the request's query parameter. |
in_reply_to_user_id | string | If this Tweet is a Reply, indicates the user ID of the parent Tweet's author. This is returned as a string in order to avoid complications with languages and tools that cannot handle large integers. You can obtain the expanded object in includes.users by adding expansions=in_reply_to_user_id in the request's query parameter. |
referenced_tweets | array | A list of Tweets this Tweet refers to. For example, if the parent Tweet is a Retweet, a Retweet with comment (also known as Quoted Tweet) or a Reply, it will include the related Tweet referenced to by its parent. To return this field, add tweet.fields=referenced_tweets in the request's query parameter. |
referenced_tweets.type | enum (retweeted , quoted , replied_to ) | Indicates the type of relationship between this Tweet and the Tweet returned in the response: retweeted (this Tweet is a Retweet), quoted (a Retweet with comment, also known as Quoted Tweet), or replied_to (this Tweet is a reply). |
referenced_tweets.id | string | The unique identifier of the referenced Tweet. You can obtain the expanded object in includes.tweets by adding expansions=referenced_tweets.id in the request's query parameter. |
attachments | object | Specifies the type of attachments (if any) present in this Tweet. To return this field, add tweet.fields=attachments in the request's query parameter. |
attachments.media_keys | array | List of unique identifiers of media attached to this Tweet. These identifiers use the same media key format as those returned by the Media Library. You can obtain the expanded object in includes.media by adding expansions=attachments.media_keys in the request's query parameter. |
attachments.poll_ids | array | List of unique identifiers of polls present in the Tweets returned. These are returned as a string in order to avoid complications with languages and tools that cannot handle large integers. You can obtain the expanded object in includes.polls by adding expansions=attachments.polls_ids in the request's query parameter. |
geo | object | Contains details about the location tagged by the user in this Tweet, if they specified one. To return this field, add tweet.fields=geo in the request's query parameter. |
geo.coordinates | object | Contains details about the coordinates of the location tagged by the user in this Tweet, if they specified one. To return this field, add tweet.fields=geo.coordinates in the request's query parameter. |
geo.coordinates.type | string | Describes the type of coordinate. The only value supported at present is Point . |
geo.coordinates.coordinates | array | A pair of decimal values representing the precise location of the user (latitude, longitude). This value be null unless the user explicitly shared their precise location. |
geo.place_id | string | The unique identifier of the place, if this is a point of interest tagged in the Tweet. You can obtain the expanded object in includes.places by adding expansions=geo.place_id in the request's query parameter. |
context_annotations | array | Contains context annotations for the Tweet. To return this field, add tweet.fields=context_annotations in the request's query parameter. |
context_annotations.domain | object | Contains elements which identify detailed information regarding the domain classification based on Tweet text. |
context_annotations.domain.id | string | Contains the numeric value of the domain. |
context_annotations.domain.name | string | Domain name based on the Tweet text. |
context_annotations.domain.description | string | Long form description of domain classification. |
context_annotations.entity | object | Contains elements which identify detailed information regarding the domain classification bases on Tweet text. |
context_annotations.entity.id | string | Unique value which correlates to an explicitly mentioned Person, Place, Product or Organization |
context_annotations.entity.name | string | Name or reference of entity referenced in the Tweet. |
context_annotations.entity.description | string | Additional information regarding referenced entity. |
entities | object | Contains details about text that has a special meaning in a Tweet. To return this field, add tweet.fields=entities in the request's query parameter. |
entities.annotations | array | Contains details about annotations relative to the text within a Tweet. |
entities.annotations.start | integer | The start position (zero-based) of the text used to annotate the Tweet. |
entities.annotations.end | integer | The end position (zero based) of the text used to annotate the Tweet. |
entities.annotations.probability | number | The confidence score for the annotation as it correlates to the Tweet text. |
entities.annotations.type | string | The description of the type of entity identified when the Tweet text was interpreted. |
entities.annotations.normalized_text | string | The text used to determine the annotation type. |
entities.urls | array | Contains details about text recognized as a URL. |
entities.urls.start | integer | The start position (zero-based) of the recognized URL within the Tweet. |
entities.urls.end | integer | The end position (zero-based) of the recognized URL within the Tweet. |
entities.urls.url | string | The URL in the format tweeted by the user. |
entities.urls.expanded_url | string | The fully resolved URL. |
entities.urls.display_url | string | The URL as displayed in the Twitter client. |
entities.urls.unwound_url | string | The full destination URL. |
entities.hashtags | array | Contains details about text recognized as a Hashtag. |
entities.hashtags.start | integer | The start position (zero-based) of the recognized Hashtag within the Tweet. |
entities.hashtags.end | integer | The end position (zero-based) of the recognized Hashtag within the Tweet. |
entities.hashtags.tag | string | The text of the Hashtag. |
entities.mentions | array | Contains details about text recognized as a user mention. |
entities.mentions.start | integer | The start position (zero-based) of the recognized user mention within the Tweet. |
entities.mentions.end | integer | The end position (zero-based) of the recognized user mention within the Tweet. |
entities.mentions.username | string | The part of text recognized as a user mention. You can obtain the expanded object in includes.users by adding expansions=entities.mentions.username in the request's query parameter. |
entities.cashtags | array | Contains details about text recognized as a Cashtag. |
entities.cashtags.start | integer | The start position (zero-based) of the recognized Cashtag within the Tweet. |
entities.cashtags.end | integer | The end position (zero-based) of the recognized Cashtag within the Tweet. |
entities.cashtags.tag | string | The text of the Cashtag. |
withheld | object | Contains withholding details for withheld content. To return this field, add tweet.fields=withheld in the request's query parameter. |
withheld.copyright | boolean | Indicates if the content is being withheld for on the basis of copyright infringement. |
withheld.country_codes | array | Provides a list of countries where this content is not available. |
withheld.scope | enum (tweet , user ) | Indicates whether the content being withheld is a Tweet or a user. |
public_metrics | object | Engagement metrics for the Tweet at the time of the request. To return this field, add tweet.fields=public_metrics in the request's query parameter. |
public_metrics.retweet_count | integer | Number of times this Tweet has been Retweeted. |
public_metrics.reply_count | integer | Number of Replies of this Tweet. |
public_metrics.like_count | integer | Number of Likes of this Tweet. |
public_metrics.quote_count | integer | Number of times this Tweet has been Retweeted with a comment (also known as Quote). |
non_public_metrics | object | Non-public engagement metrics for the Tweet at the time of the request. This is a private metric, and requires the use of OAuth 1.0a User Context authentication. All non_public_metrics are only available for Tweets created the last 30 days. To return this field, add tweet.fields=non_public_metrics in the request's query parameter. |
non_public_metrics.impression_count | integer | Number of times the Tweet has been viewed. This is a private metric, and requires the use of OAuth 1.0a User Context authentication. All non_public_metrics are only available for Tweets created the last 30 days. |
non_public_metrics.url_link_clicks | integer | Number of times a user clicks on a URL link or URL preview card in a Tweet. This is a private metric, and requires the use of OAuth 1.0a User Context authentication. All non_public_metrics are only available for Tweets created the last 30 days. |
non_public_metrics.user_profile_clicks | integer | Number of times a user clicks the following portions of a Tweet - display name, user name, profile picture. This is a private metric, and requires the use of OAuth 1.0a User Context authentication. All non_public_metrics are only available for Tweets created the last 30 days. |
organic_metrics | object | Organic engagement metrics for the Tweet at the time of the request. Requires user context authentication. All organic_metrics are only available for Tweets created the last 30 days. |
organic_metrics.impression_count | integer | Number of times the Tweet has been viewed organically (not in Ad placement). This is a private metric, and requires the use of OAuth 1.0a User Context authentication. All organic_metrics are only available for Tweets created the last 30 days. |
organic_metrics.url_link_clicks | integer | Number of times a user clicks on a URL link or URL preview card in a Tweet organically. This is a private metric, and requires the use of OAuth 1.0a User Context authentication. All organic_metrics are only available for Tweets created the last 30 days. |
organic_metrics.user_profile_clicks | integer | Number of times a user clicks the following portions of a Tweet organically - display name, user name, profile picture. This is a private metric, and requires the use of OAuth 1.0a User Context authentication. All organic_metrics are only available for Tweets created the last 30 days. |
organic_metrics.retweet_count | integer | Number of times the Tweet has been Retweeted organically. All organic_metrics are only available for Tweets created the last 30 days. |
organic_metrics.reply_count | integer | Number of replies the Tweet has received organically. All organic_metrics are only available for Tweets created the last 30 days. |
organic_metrics.like_count | integer | Number of likes the Tweet has received organically. All organic_metrics are only available for Tweets created the last 30 days. |
promoted_metrics | object | Engagement metrics for the Tweet at the time of the request in a promoted context. Requires user context authentication. All promoted_metrics are only available for Tweets created the last 30 days. |
promoted_metrics.impression_count | integer | Number of times the Tweet has been viewed when that Tweet is being promoted. This is a private metric, and requires the use of OAuth 1.0a User Context authentication. All promoted_metrics are only available for Tweets created the last 30 days. |
promoted_metrics.url_link_clicks | integer | Number of times a user clicks on a URL link or URL preview card in a Tweet when it is being promoted. This is a private metric, and requires the use of OAuth 1.0a User Context authentication. All promoted_metrics are only available for Tweets created the last 30 days. |
promoted_metrics.user_profile_clicks | integer | Number of times a user clicks the following portions of a Tweet when it is being promoted - display name, user name, profile picture. This is a private metric, and requires the use of OAuth 1.0a User Context authentication. All promoted_metrics are only available for Tweets created the last 30 days. |
promoted_metrics.retweet_count | integer | Number of times this Tweet has been Retweeted when that Tweet is being promoted. All promoted_metrics are only available for Tweets created the last 30 days. |
promoted_metrics.reply_count | integer | Number of Replies to this Tweet when that Tweet is being promoted. All promoted_metrics are only available for Tweets created the last 30 days. |
promoted_metrics.like_count | integer | Number of Likes of this Tweet when that Tweet is being promoted. All promoted_metrics are only available for Tweets created the last 30 days. |
possibly_sensitive | boolean | Indicates if this Tweet contains URLs marked as sensitive, for example content suitable for mature audiences. To return this field, add tweet.fields=possibly_sensitive in the request's query parameter. |
lang | string | Language of the Tweet, if detected by Twitter. Returned as a BCP47 language tag. To return this field, add tweet.fields=lang in the request's query parameter. |
reply_settings | string | Shows who can reply to this Tweet. Fields returned are everyone , mentionedUsers , and following .To return this field, add tweet.fields=reply_settings in the request's query parameter. |
source | string | The name of the app the user Tweeted from. To return this field, add tweet.fields=source in the request's query parameter. |
includes | object | If you include an expansion parameter, the referenced objects will be returned if available. |
includes.tweets | array | When including the expansions=referenced_tweets.id parameter, this includes a list of referenced Retweets, Quoted Tweets, or replies in the form of Tweet objects with their default fields and any additional fields requested using the tweet.fields parameter, assuming there is a referenced Tweet present in the returned Tweet(s). |
includes.users | array | When including the expansions=author_id parameter, this includes a list of referenced Tweet authors in the form of user objects with their default fields and any additional fields requested using the user.fields parameter. |
includes.places | array | When including the expansions=geo.place_id parameter, this includes a list of referenced places in Tweets in the form of place objects with their default fields and any additional fields requested using the place.fields parameter, assuming there is a place present in the returned Tweet(s). |
includes.media | array | When including the expansions=attachments.media_keys parameter, this includes a list of images, videos, and GIFs included in Tweets in the form of media objects with their default fields and any additional fields requested using the media.fields parameter, assuming there is a media attachment present in the returned Tweet(s). |
includes.polls | string | When including the expansions=attachments.poll_ids parameter, this includes a list of polls that are attached to Tweets in the form of poll objects with their default fields and any additional fields requested using the poll.fields parameter, assuming there is a poll present in the returned Tweet(s). |
meta.count | integer | The number of Tweet results returned in the response. |
meta.newest_id | string | The Tweet ID of the most recent Tweet returned in the response. |
meta.oldest_id | string | The Tweet ID of the oldest Tweet returned in the response. |
meta.next_token | string | A value that encodes the next 'page' of results that can be requested, via the pagination_token request parameter. |
meta.previous_token | string | A value that encodes the previous 'page' of results that can be requested, via the pagination_token request parameter. |
errors | object | Contains details about errors that affected any of the requested Tweets. See Status codes and error messages for more details. |