7-day Trial

Twitter scraper for live X likes, reposts and views

Paste a public profile or post. Web Unlocker returns the X page with no login: a profile's followers, bio and 5 latest posts, each post with exact likes, reposts, replies and views. $0.98 per 1,000 pages.

Try:

1,000 free requests · Pay only on success · 195+ countries · Claude ready

x.com/NatGeoExample run · 28M followers · billed as 1 page · 4.6 s
Download
  1. Opening the page from a US address
  2. Loading it the way a logged-out visitor does
  3. Reading the profile or post

X pages usually take 2 to 10 seconds. It is still working, no need to click again.

Ready for your own accounts? Get an API key or book a demo.

Get your API key and free requests

Tell us a little about your team and get:

  • API key within one business day
  • Free requests on your own targets
4.7 / 5 on G2from 79 reviews
Book a demo

No card. Cancel anytime. We reply within one business day.

What the Twitter scraper API returns

Public pages, with no login, no X account and no X API key. Social listening teams, agencies, brands and AI agents read these two kinds of page, each billed as one page.

  • Twitter profile scraper

    x.com/NatGeo
    Name
    National Geographic
    Followers
    28M
    Following
    179
    Posts
    73.7K
    Joined
    November 2008
    Latest posts
    5, with exact counts
  • Tweet scraper

    x.com/NASA/status/2120305504295510080
    Likes
    4,337
    Reposts
    685
    Replies
    213
    Views
    565,254
    Text
    How’s that for a starburst?
    Top replies
    3, with their counts

Want to try it yourself? Take your API key with 1,000 free requests.

Read 1,000 X posts for $0.98, not $5 on the X API

Web Unlocker bills a post page once, with its exact replies, reposts, likes and views, at $0.98 per 1,000 pages. A Twitter scraper on Apify bills $0.05 for each single post link, and Bright Data $1.50 per 1,000 records.

The X API bills $5.00 per 1,000 posts.
Here 1,000 cost $0.98.

A request the service cannot answer costs nothing. In our test 6 of 50 first tries came back with a quick refusal, and asking again brought the page.

What 1,000 X posts cost

1,000 public posts with likes, reposts, replies and views, at published prices

  • $0.98Gologin Web Unlocker
  • $1.50Bright Data X Scraper API
  • $5.00Official X API
  • $50.40Twitter Scraper Lite (Apify based)

Gologin: $0.98 per 1,000 pages, one page a post. Bright Data bills each record, $1.50 per 1,000. The X API bills $0.005 per post read. Twitter Scraper Lite on Apify bills $0.05 per single post link, plus $0.0004 per post.

Ready to run it on your own posts? Get your API key and free requests.

Twitter scraping: 50 of 50 pages with data

Our Twitter web scraping test: 20 brand and creator profiles, one fresh post from each, and 10 smaller accounts, each page asked for up to three times, the way the demo above does it. This is what came back, and how fast.

44 of 50 came back on the first try.
The other 6 on the second or third.

Compare the X API with Twitter scrapers

The official X API, Apify's Twitter scrapers and Bright Data's X Scraper API: what each bills for the same 1,000 posts and profiles, and what it asks of you before you start.

Billing unit, price for 1,000 posts and 1,000 profiles, the account you need, repeat checks, keyword search, exact follower counts, free start and other sites in Gologin Web Unlocker, the X API, Apify and Bright Data
What it takesWeb UnlockerX APIApifyBright Data
You pay forA pageEach post or profileEach query and postEach record
1,000 posts by link$0.98$5.00$50.40$1.50
1,000 profiles$0.98$10.00$4.40$1.50
Developer accountNot neededNeededNot neededNot needed
Repeat checks of an accountYesYesLimitedYes
Search by keywordNoYesYesYes
Exact follower countsRoundedYesYesYes
Free to start1,000 requestsNo$5 a month5,000 a month
Same price on any other siteYesNoNoNo

Scraping more than X? Web Unlocker returns any page the same way, at the same price.

Watch 100 X accounts for 10 cents a check

A profile page brings an account's 5 latest posts with exact likes, reposts, replies and views. 100 accounts give you 500 fresh posts for $0.098, as often as you check. Apify's main Twitter scraper asks you not to repeat a query.

The X API bills $5 for 1,000 posts.
Here 1,000 come from 200 profiles for $0.20.

How to scrape Twitter data with Python or Node.js

X sends a logged-out visitor the data in the page's HTML, with exact counts under every post. Web Unlocker returns that HTML, and a few lines of code read it. The Accounts list tab is a small Twitter crawler: accounts in, latest posts in a CSV out.

  1. Step 01

    Get your API key

    Fill in the form above. The key arrives by email within one business day.

  2. Step 02

    Pick the page

    A profile for its followers and 5 latest posts, a post for its exact likes, reposts, replies and views.

  3. Step 03

    Read the data

    Check that the page came with data, and ask again when the service sent a quick refusal.

Install
pip install requests
Run
GOLOGIN_SCRAPING_API_KEY=your_key python x_profile.py
Sends to
https://parsing.webunlocker.gologin.com/v1/scrape
import html
import json
import os
import re
import time
from datetime import datetime, timezone

import requests

username = "NASA"


def scrape(url):
    for attempt in range(3):
        address = url if attempt == 0 else f"{url}?fresh={int(time.time())}"
        response = requests.get(
            "https://parsing.webunlocker.gologin.com/v1/scrape",
            params={"url": address, "geo": "us", "format": "json"},
            headers={"apikey": os.environ["GOLOGIN_SCRAPING_API_KEY"]},
            timeout=90,
        )
        page = response.json().get("data", {}).get("html", "") if response.ok else ""
        if 'role="group"' in page:
            return page
        time.sleep(3)
    raise RuntimeError("The page came back without data, try again later")


def meta(page, name):
    found = re.search(rf'<meta (?:property|name)="{name}" content="([^"]*)"', page)
    return html.unescape(found.group(1)) if found else None


def count(page, word):
    found = re.search(rf">([\d.,]+[KMB]?)</span>\s*<span[^>]*>{word}<", page)
    return found.group(1) if found else None


def text_of(chunk):
    start = chunk.find('aria-label="More"')
    if start < 0:
        return ""
    start = chunk.find("</button>", start) + len("</button>")
    ends = [chunk.find(mark, start) for mark in ('inert=""', "data-press-control", "<video", 'role="group"', "<article")]
    end = min([chunk.rfind("<", 0, at) for at in ends if at > 0] or [len(chunk)])
    words = re.sub(r"<script.*?</script>|<[^>]+>", "", chunk[start:end], flags=re.S)
    return html.unescape(words).strip()


page = scrape(f"https://x.com/{username}")

posts = []
start = 0
for match in re.finditer(r'aria-label="([^"]*)"[^>]*role="group"', page):
    chunk = page[start : match.start()]
    start = match.end()
    link = re.search(r'href="/(\w+)/status/(\d+)', chunk)
    stamp = re.search(r'"timestamp":(\d+)', chunk)
    counts = {word.rstrip("s").replace("replie", "reply"): int(value) for value, word in re.findall(r"(\d+) (\w+)", match.group(1))}
    posts.append(
        {
            "url": f"https://x.com/{link.group(1)}/status/{link.group(2)}",
            "time": datetime.fromtimestamp(int(stamp.group(1)) / 1000, timezone.utc).isoformat() if stamp else None,
            "pinned": ">Pinned</span>" in chunk[: chunk.find("data-post-avatar")],
            "text": text_of(chunk),
            "replies": counts.get("reply", 0),
            "reposts": counts.get("repost", 0),
            "likes": counts.get("like", 0),
            "bookmarks": counts.get("bookmark", 0),
            "views": counts.get("view"),
        }
    )

profile = {
    "username": meta(page, "profile:username"),
    "name": meta(page, "author"),
    "bio": meta(page, "description"),
    "followers": count(page, "Followers"),
    "following": count(page, "Following"),
    "posts": meta(page, "twitter:data1"),
    "joined": meta(page, "twitter:data2"),
    "latest_posts": posts,
}

print(json.dumps(profile, indent=2, ensure_ascii=False))
print(f"@{username}: {profile['followers']} followers, {len(posts)} latest posts with exact counts from one page")

Ready to run it on your own accounts? Get your API key and free requests.

Part of the complete tech stack

One account, one proxy network, one ecosystem. Pick the product the job needs.

Scraping more sites? See the Instagram, Reddit and YouTube scrapers, or every web scraping tool.

Twitter scraper FAQ

What is a Twitter scraper?

A Twitter scraper, now also called an X scraper, is a tool that reads public X (formerly Twitter) pages and turns them into data: a profile's name, bio, followers and latest posts, a post's text, time, replies, reposts, likes and views. Gologin Web Unlocker is a Twitter scraper API: send it a page address and it returns the page with that data, at $0.98 per 1,000 pages.

Can you still scrape Twitter in 2026?

Yes, with no login. X shows public profiles and posts to logged-out visitors, with the data in the page itself. Web Unlocker opens them as a logged-out visitor from a US address, so you need no X account, no cookies and no X API key: in our test 50 of 50 pages came back with data.

How do I build a Twitter scraper in Python?

Send the profile or post address to Web Unlocker with the requests library and read the counts from the page. The Python tab above is a complete Python Twitter scraper, tested on the live API: it prints a profile's followers and its 5 latest posts with exact likes, reposts, replies and views.

Can I scrape Twitter without API access?

Yes. The official X API is one way to read posts, the public page is another. Web Unlocker reads the page, so you skip the developer account, the X API bill and its monthly cap of 3 million post reads.

Can I get the Twitter API for free?

Not for reading posts at scale. The X API now bills per use: $0.005 a post read and $0.010 a profile, up to 3 million post reads a month. Web Unlocker comes with 1,000 free requests, enough for 1,000 posts or profiles.

How does X API pricing compare with a scraper?

Twitter API pricing is now X API pricing, billed per use: $5.00 for 1,000 posts and $10.00 for 1,000 profiles. Web Unlocker bills $0.98 per 1,000 pages either way, and a profile page already carries the account's 5 latest posts: 1,000 posts from 200 profiles cost $0.20.

How much does it cost to scrape 1 million tweets?

$980 if you read each post from its own link, at $0.98 per 1,000 pages. Read them from profile pages and 1 million posts take 200,000 pages of 5 posts each: $196. The X API bills $5,000 for the same million posts.

Can I scrape the latest Twitter data in real time?

Yes. Each request loads the live page, so the counts are the ones X shows at that moment: in our test the same NASA post had 4,337 likes, and 4,341 twenty minutes later.

Can I scrape tweets by keyword or hashtag?

Not with Web Unlocker. X opens search and hashtag pages only after a login, so a logged-out request lands on the sign-up page. Start from the accounts and posts you follow: their pages are public, and the Accounts list sample above checks a whole list of them.

Can I scrape Twitter replies and comments?

In part. A post page brings its top 3 or 4 replies, each with its author, text and exact likes, reposts and views. The full list of replies opens only after a login.

Can I scrape Twitter followers?

Not as a list: who follows an account is shown after a login only. The follower count is public and comes with every profile, rounded the way X shows it to logged-out visitors (92.2M, 28M): the page carries no exact figure. Every post's counts come exact.

How many posts does a profile page give?

The 5 latest, as X shows them to a logged-out visitor, each with exact replies, reposts, likes, bookmarks and views. A pinned post comes first and is marked as pinned. For older posts, use their links: each post page is one request.

What is the best Twitter scraper?

It depends on the job. Apify's scrapers search by keyword and bill each post. The X API reads everything, at $5 per 1,000 posts. Web Unlocker returns the public profile or post page with exact counts at one price per page, on X and on any other site.

Is there an alternative to the Apify Twitter scraper?

Yes. Apify's main Twitter scraper takes searches only, at least 50 posts a query, and asks you not to repeat the same query; single posts go through its Lite version at $0.05 a link. Web Unlocker takes any profile or post link at $0.98 per 1,000 pages, as often as you need.

Is it legal to scrape Twitter?

Profiles and posts that load without a login are public pages. In X Corp. v. Bright Data, in May 2024, a US federal judge dismissed X's lawsuit over the scraping of public data. What you collect and how you use it is your call, so check it against the rules that apply to your project.

Can AI agents use the Twitter scraper?

Yes. An agent sends the profile or post address to the same API and reads the counts from the page. With MCP & AI Skills, Claude builds that tool from a description of the job.

Get your API key and free requests

Tell us a little about your team and get:

  • API key within one business day
  • Free requests on your own targets
4.7 / 5 on G2from 79 reviews
Book a demo

No card. Cancel anytime. We reply within one business day.