Rotating Proxy Network
Our API includes a built-in rotating proxy system that automatically changes IP addresses for every request.
X Scraper API efficiently allows you to extract views, retweets, likes, bookmarks, X handle, and many more data points by passing the URL of the Tweets.
{
"views": "76M",
"retweets": "41.2K",
"quotes": "17k",
"likes": "409.7k",
"bookmarks": "3,528",
"tweet": "We're purging accounts that have had no activity at all for several years...",
"name": "Elon Musk",
"profile_handle": "@elonmusk",
"profile_url": "https://www.twitter.com/elonmusk",
"tweet_timing": "4:21 PM",
"tweet_date": "May 8, 2023",
"tweet_id": "1655608985058267139",
"tweet_url": "https://www.twitter.com/elonmusk/status/1655608985058267139"
}import requests
api_key = "5eaa61a6e562fc52fe763tr516e4653"
url = "https://api.scrapingdog.com/twitter/"
params = {
"api_key": api_key,
"parsed": "true",
"url": "https://twitter.com/elonmusk/status/1655608985058267139"
}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
print(data)
else:
print(f"Request failed with status code: {response.status_code}")import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {
String apiKey = "5eaa61a6e562fc52fe763tr516e4653";
String parsed = "true";
String tweetUrl = "https://twitter.com/elonmusk/status/1655608985058267139";
String apiUrl = "https://api.scrapingdog.com/twitter/?api_key=" + apiKey
+ "&parsed=" + parsed
+ "&url=" + tweetUrl;
URL url = new URL(apiUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
int responseCode = connection.getResponseCode();
if (responseCode == 200) {
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = reader.readLine()) != null) {
response.append(inputLine);
}
reader.close();
System.out.println(response.toString());
} else {
System.out.println("HTTP request failed with response code: " + responseCode);
}
connection.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}<?php
$api_key = '5eaa61a6e562fc52fe763tr516e4653';
$parsed = 'true';
$tweet_url = 'https://twitter.com/elonmusk/status/1655608985058267139';
$url = 'https://api.scrapingdog.com/twitter/?api_key=' . $api_key . '&parsed=' . $parsed . '&url=' . $tweet_url;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if ($response === false) {
echo 'cURL error: ' . curl_error($ch);
} else {
echo $response;
}
curl_close($ch);require 'net/http'
require 'uri'
api_key = '5eaa61a6e562fc52fe763tr516e4653'
parsed = 'true'
tweet_url = 'https://twitter.com/elonmusk/status/1655608985058267139'
url = URI.parse("https://api.scrapingdog.com/twitter/?api_key=#{api_key}&parsed=#{parsed}&url=#{tweet_url}")
request = Net::HTTP::Get.new(url)
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
response = http.request(request)
if response.is_a?(Net::HTTPSuccess)
puts response.body
else
puts "HTTP request failed with code: #{response.code}, message: #{response.message}"
endconst axios = require('axios');
const api_key = '5eaa61a6e562fc52fe763tr516e4653';
const url = 'https://api.scrapingdog.com/twitter/';
const params = {
api_key: api_key,
parsed: 'true',
url: 'https://twitter.com/elonmusk/status/1655608985058267139',
};
axios
.get(url, { params: params })
.then(function (response) {
if (response.status === 200) {
const data = response.data;
console.log(data);
} else {
console.log('Request failed with status code: ' + response.status);
}
})
.catch(function (error) {
console.error('Error making the request: ' + error.message);
});tweettweet_idtweet_urltweet_datetweet_timingviewslikesretweetsquotesbookmarksnameprofile_handleprofile_urltweet_idtweet_urlprofile_urlreplytweetprofile_handleapi_keyurlparsedScraping X by hand means fighting rate limits, login walls, and a feed that hides data behind GraphQL endpoints.
X caps how many tweets you can read per account, then silently throttles or suspends scrapers tracking high-volume conversations.
Most tweet and profile pages now demand a session, forcing you to farm and rotate accounts just to read public posts.
Engagement counts load from internal GraphQL calls with rotating bearer tokens and feature flags that break parsers without warning.
Views and likes arrive as "76M" or "409.7k" strings buried in dynamic DOM, so manual pipelines stay unreliable.
One request with a tweet URL returns parsed engagement and author data, with no accounts or rate-limit juggling.
Read public tweets and profiles without supplying X credentials. Scrapingdog handles sessions and the login wall for you.
Built-in rotation absorbs X throttling so social-listening and brand-monitoring jobs keep running across thousands of tweets.
Get views, likes, retweets, quotes, and bookmarks as ready-to-use fields, with no GraphQL parsing or count cleanup.
We track X frontend and GraphQL changes so your sentiment and market-intelligence pipelines do not break when the site shifts.
Our API includes a built-in rotating proxy system that automatically changes IP addresses for every request.
Scrapingdog automatically bypasses CAPTCHA and anti-bot protection on X, so you can send requests without blocks.
Extract views, retweets, likes, bookmarks, quotes, and tweet text as ready-to-use structured JSON.
Extract live data directly from X, ensuring you always have the most current engagement information.
Retrieve the author name, profile handle, and profile URL alongside every tweet you scrape.
Receive parsed tweet data in just a few seconds with our high-performance X scraping API.
Track how competitor brands and accounts perform on X by scraping their tweet engagement and reach.
Analyze likes, retweets, and replies to gauge how audiences feel about products, campaigns, or topics.
Measure the reach and engagement of influencer tweets to identify the right partners for your campaigns.
Detect emerging trends and viral topics by monitoring tweet views, retweets, and engagement over time.
Follow live conversations around events by tracking tweet activity and engagement metrics in real time.
Gather structured tweet data for research into audience behavior, public opinion, and market dynamics.
Sign up and get free credits to start testing the X Scraper API.
Access your unique API key from the dashboard and use it to scrape the data.
Pass a tweet URL with parsed=true to fetch its live engagement data.
Get tweet objects with views, likes, retweets, quotes, bookmarks, and the author handle.
Start your web scraping journey with 200 free credits. Test our service and upgrade to one of the plans below. Cancel anytime.

ScrapingDog on my first test try knocked out a complex scrape that I'd been unable to do with various other methods.
United States
The API is one of the best in the market for me. The API is simple to grasp and powerful to use.
United Arab Emirates
A lifesaver service. Allowed us to solve the last piece of the puzzle.
Latvia
Reliable, and simple to use! Itβs also inexpensive and has packaged solutions for every need (Google, LinkedIn). Highly recommend.
France
Scrapingdog's X API allows you to extract data from Tweets. You can scale your process of getting data points like retweets, likes, views & more from a single tweet.
Scrapingdog also provides the YouTube Search Scraper API, Instagram Scraper API, Facebook Scraper API, LinkedIn Profile Scraper API & LinkedIn Jobs API.
Each API request consumes a certain number of credits based on the dedicated API you're using.
Scraping publicly available data like views, retweets, and profile handle is considered legal.
Get 200 free credits to spin the API. No credit card required!