curl --request GET \
--url https://api.twitterapi.io/twitter/user/last_tweets \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.twitterapi.io/twitter/user/last_tweets"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.twitterapi.io/twitter/user/last_tweets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.twitterapi.io/twitter/user/last_tweets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.twitterapi.io/twitter/user/last_tweets"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.twitterapi.io/twitter/user/last_tweets")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.twitterapi.io/twitter/user/last_tweets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"pin_tweet": {
"type": "tweet",
"id": "<string>",
"url": "<string>",
"text": "<string>",
"source": "<string>",
"retweetCount": 123,
"replyCount": 123,
"likeCount": 123,
"quoteCount": 123,
"viewCount": 123,
"createdAt": "<string>",
"lang": "<string>",
"bookmarkCount": 123,
"isReply": true,
"inReplyToId": "<string>",
"conversationId": "<string>",
"displayTextRange": [
123
],
"inReplyToUserId": "<string>",
"inReplyToUsername": "<string>",
"author": {
"type": "user",
"userName": "<string>",
"url": "<string>",
"id": "<string>",
"name": "<string>",
"isBlueVerified": true,
"verifiedType": "<string>",
"profilePicture": "<string>",
"coverPicture": "<string>",
"description": "<string>",
"location": "<string>",
"followers": 123,
"following": 123,
"canDm": true,
"createdAt": "<string>",
"favouritesCount": 123,
"hasCustomTimelines": true,
"isTranslator": true,
"mediaCount": 123,
"statusesCount": 123,
"withheldInCountries": [
"<string>"
],
"affiliatesHighlightedLabel": {},
"possiblySensitive": true,
"pinnedTweetIds": [
"<string>"
],
"isAutomated": true,
"automatedBy": "<string>",
"unavailable": true,
"message": "<string>",
"unavailableReason": "<string>",
"profile_bio": {
"description": "<string>",
"entities": {
"description": {
"urls": [
{
"display_url": "<string>",
"expanded_url": "<string>",
"indices": [
123
],
"url": "<string>"
}
]
},
"url": {
"urls": [
{
"display_url": "<string>",
"expanded_url": "<string>",
"indices": [
123
],
"url": "<string>"
}
]
}
}
}
},
"entities": {
"hashtags": [
{
"indices": [
123
],
"text": "<string>"
}
],
"urls": [
{
"display_url": "<string>",
"expanded_url": "<string>",
"indices": [
123
],
"url": "<string>"
}
],
"user_mentions": [
{
"id_str": "<string>",
"name": "<string>",
"screen_name": "<string>"
}
]
},
"quoted_tweet": "<unknown>",
"retweeted_tweet": "<unknown>",
"isLimitedReply": true
},
"tweets": [
{
"type": "tweet",
"id": "<string>",
"url": "<string>",
"text": "<string>",
"source": "<string>",
"retweetCount": 123,
"replyCount": 123,
"likeCount": 123,
"quoteCount": 123,
"viewCount": 123,
"createdAt": "<string>",
"lang": "<string>",
"bookmarkCount": 123,
"isReply": true,
"inReplyToId": "<string>",
"conversationId": "<string>",
"displayTextRange": [
123
],
"inReplyToUserId": "<string>",
"inReplyToUsername": "<string>",
"author": {
"type": "user",
"userName": "<string>",
"url": "<string>",
"id": "<string>",
"name": "<string>",
"isBlueVerified": true,
"verifiedType": "<string>",
"profilePicture": "<string>",
"coverPicture": "<string>",
"description": "<string>",
"location": "<string>",
"followers": 123,
"following": 123,
"canDm": true,
"createdAt": "<string>",
"favouritesCount": 123,
"hasCustomTimelines": true,
"isTranslator": true,
"mediaCount": 123,
"statusesCount": 123,
"withheldInCountries": [
"<string>"
],
"affiliatesHighlightedLabel": {},
"possiblySensitive": true,
"pinnedTweetIds": [
"<string>"
],
"isAutomated": true,
"automatedBy": "<string>",
"unavailable": true,
"message": "<string>",
"unavailableReason": "<string>",
"profile_bio": {
"description": "<string>",
"entities": {
"description": {
"urls": [
{
"display_url": "<string>",
"expanded_url": "<string>",
"indices": [
123
],
"url": "<string>"
}
]
},
"url": {
"urls": [
{
"display_url": "<string>",
"expanded_url": "<string>",
"indices": [
123
],
"url": "<string>"
}
]
}
}
}
},
"entities": {
"hashtags": [
{
"indices": [
123
],
"text": "<string>"
}
],
"urls": [
{
"display_url": "<string>",
"expanded_url": "<string>",
"indices": [
123
],
"url": "<string>"
}
],
"user_mentions": [
{
"id_str": "<string>",
"name": "<string>",
"screen_name": "<string>"
}
]
},
"quoted_tweet": "<unknown>",
"retweeted_tweet": "<unknown>",
"isLimitedReply": true
}
]
},
"has_next_page": true,
"next_cursor": "<string>",
"code": 123,
"msg": "<string>"
}{
"error": 123,
"message": "<string>"
}Get User Last Tweets
Get an X user’s latest tweets by username, newest first, up to 20 per page. For frequent checks of many accounts, use Twitter Stream instead.
curl --request GET \
--url https://api.twitterapi.io/twitter/user/last_tweets \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.twitterapi.io/twitter/user/last_tweets"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.twitterapi.io/twitter/user/last_tweets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.twitterapi.io/twitter/user/last_tweets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.twitterapi.io/twitter/user/last_tweets"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.twitterapi.io/twitter/user/last_tweets")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.twitterapi.io/twitter/user/last_tweets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"pin_tweet": {
"type": "tweet",
"id": "<string>",
"url": "<string>",
"text": "<string>",
"source": "<string>",
"retweetCount": 123,
"replyCount": 123,
"likeCount": 123,
"quoteCount": 123,
"viewCount": 123,
"createdAt": "<string>",
"lang": "<string>",
"bookmarkCount": 123,
"isReply": true,
"inReplyToId": "<string>",
"conversationId": "<string>",
"displayTextRange": [
123
],
"inReplyToUserId": "<string>",
"inReplyToUsername": "<string>",
"author": {
"type": "user",
"userName": "<string>",
"url": "<string>",
"id": "<string>",
"name": "<string>",
"isBlueVerified": true,
"verifiedType": "<string>",
"profilePicture": "<string>",
"coverPicture": "<string>",
"description": "<string>",
"location": "<string>",
"followers": 123,
"following": 123,
"canDm": true,
"createdAt": "<string>",
"favouritesCount": 123,
"hasCustomTimelines": true,
"isTranslator": true,
"mediaCount": 123,
"statusesCount": 123,
"withheldInCountries": [
"<string>"
],
"affiliatesHighlightedLabel": {},
"possiblySensitive": true,
"pinnedTweetIds": [
"<string>"
],
"isAutomated": true,
"automatedBy": "<string>",
"unavailable": true,
"message": "<string>",
"unavailableReason": "<string>",
"profile_bio": {
"description": "<string>",
"entities": {
"description": {
"urls": [
{
"display_url": "<string>",
"expanded_url": "<string>",
"indices": [
123
],
"url": "<string>"
}
]
},
"url": {
"urls": [
{
"display_url": "<string>",
"expanded_url": "<string>",
"indices": [
123
],
"url": "<string>"
}
]
}
}
}
},
"entities": {
"hashtags": [
{
"indices": [
123
],
"text": "<string>"
}
],
"urls": [
{
"display_url": "<string>",
"expanded_url": "<string>",
"indices": [
123
],
"url": "<string>"
}
],
"user_mentions": [
{
"id_str": "<string>",
"name": "<string>",
"screen_name": "<string>"
}
]
},
"quoted_tweet": "<unknown>",
"retweeted_tweet": "<unknown>",
"isLimitedReply": true
},
"tweets": [
{
"type": "tweet",
"id": "<string>",
"url": "<string>",
"text": "<string>",
"source": "<string>",
"retweetCount": 123,
"replyCount": 123,
"likeCount": 123,
"quoteCount": 123,
"viewCount": 123,
"createdAt": "<string>",
"lang": "<string>",
"bookmarkCount": 123,
"isReply": true,
"inReplyToId": "<string>",
"conversationId": "<string>",
"displayTextRange": [
123
],
"inReplyToUserId": "<string>",
"inReplyToUsername": "<string>",
"author": {
"type": "user",
"userName": "<string>",
"url": "<string>",
"id": "<string>",
"name": "<string>",
"isBlueVerified": true,
"verifiedType": "<string>",
"profilePicture": "<string>",
"coverPicture": "<string>",
"description": "<string>",
"location": "<string>",
"followers": 123,
"following": 123,
"canDm": true,
"createdAt": "<string>",
"favouritesCount": 123,
"hasCustomTimelines": true,
"isTranslator": true,
"mediaCount": 123,
"statusesCount": 123,
"withheldInCountries": [
"<string>"
],
"affiliatesHighlightedLabel": {},
"possiblySensitive": true,
"pinnedTweetIds": [
"<string>"
],
"isAutomated": true,
"automatedBy": "<string>",
"unavailable": true,
"message": "<string>",
"unavailableReason": "<string>",
"profile_bio": {
"description": "<string>",
"entities": {
"description": {
"urls": [
{
"display_url": "<string>",
"expanded_url": "<string>",
"indices": [
123
],
"url": "<string>"
}
]
},
"url": {
"urls": [
{
"display_url": "<string>",
"expanded_url": "<string>",
"indices": [
123
],
"url": "<string>"
}
]
}
}
}
},
"entities": {
"hashtags": [
{
"indices": [
123
],
"text": "<string>"
}
],
"urls": [
{
"display_url": "<string>",
"expanded_url": "<string>",
"indices": [
123
],
"url": "<string>"
}
],
"user_mentions": [
{
"id_str": "<string>",
"name": "<string>",
"screen_name": "<string>"
}
]
},
"quoted_tweet": "<unknown>",
"retweeted_tweet": "<unknown>",
"isLimitedReply": true
}
]
},
"has_next_page": true,
"next_cursor": "<string>",
"code": 123,
"msg": "<string>"
}{
"error": 123,
"message": "<string>"
}Authorizations
Query Parameters
user id of the user.userId is recommended, could be more stable and faster than userName.userId and userName are mutually exclusive. If both are provided, userId will be used.
screen name of the user.userId and userName are mutually exclusive. If both are provided, userId will be used.
The cursor to paginate through the results. First page is "".
Whether to include replies in the results. Default is False.
Response
Tweets response
Status of the request: success or error
success, error Show child attributes
Show child attributes
Indicates if there are more results available (top level, not inside data)
Cursor for fetching the next page of results (top level, not inside data)
0 on success
Message of the request (error message on failure)