X Profile Tweets Scraper avatar

X Profile Tweets Scraper

Pricing

from $0.03 / 1,000 result extracteds

Go to Apify Store
X Profile Tweets Scraper

X Profile Tweets Scraper

Scrape public tweets from X profiles and status URLs for social listening and content monitoring.

Pricing

from $0.03 / 1,000 result extracteds

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

7 days ago

Last modified

Share

Scrape visible public tweets from X profile pages and status URLs, including text, author, tweet URL, engagement counts when available, media URLs, reply flags, and scrape timestamps.

Use it for social listening, competitor monitoring, creator research, lightweight public-post exports, content tracking, and agent-ready X/Twitter datasets.

At a glance

  • Public profile tweets: Add one or more X/Twitter profile URLs and save visible public tweets.
  • Specific status URLs: Add individual public tweet URLs when you need exact posts.
  • Engagement fields: Export reply, repost, like, and view counts when they are visible in the public page HTML.
  • Reply control: Include or skip tweets detected as replies.
  • API-ready output: Download CSV/JSON/Excel exports or send tweet rows to dashboards, social listening workflows, agents, and warehouses.

Ready-to-run examples

Use these saved Store examples as starting points:

What can it do?

X Profile Tweets Scraper fetches public X pages, parses visible tweet blocks, removes duplicate tweet IDs within a run, and saves one dataset row per extracted public tweet.

  • Extract profile timelines: Save visible tweets from each supplied public profile URL.
  • Extract status pages: Save specific public tweets from statusUrls.
  • Capture author context: Save username, display name, profile URL, tweet ID, and tweet URL.
  • Capture content and metrics: Save tweet text, visible counts, media URLs, reply flag, and timestamp fields.
  • Control result volume: Use maxTweetsPerProfile to cap saved tweets per profile.

Common workflows

  • Social listening: Track public posts from brands, products, founders, creators, or competitors.
  • Content research: Export tweet text and URLs for topic analysis, newsletters, trend reports, or editorial planning.
  • Competitor monitoring: Schedule small runs for public competitor profiles and compare post cadence or engagement.
  • Creator research: Collect recent visible posts and media URLs from public accounts.
  • Agent workflows: Feed public tweet rows into MCP-compatible tools or downstream summarization pipelines.

Output fields

The actor returns one dataset row per saved public tweet.

FieldDescription
profileUrlSource profile URL when the tweet came from a profile page
usernameX username
displayNameDisplay name when visible
tweetIdTweet/status ID
tweetUrlPublic tweet URL
textTweet text extracted from the public page
createdAtVisible date or time label from the page
replyCountReply count when visible
repostCountRepost count when visible
likeCountLike count when visible
viewCountView count when visible
mediaUrlsPublic media image URLs found in the tweet block
isReplyWhether the tweet appears to be a reply
scrapedAtISO timestamp for extraction

Pricing

The actor uses pay-per-event pricing, so cost is tied to the run and saved tweet rows.

EventPriceCharged when
start$0.005 per runOnce when the actor starts.
resultBRONZE $0.0000347 per saved tweet rowEach public tweet row saved to the dataset. This is about $0.03 per 1,000 saved tweets on BRONZE, with lower per-result prices on higher Apify plans.

Use a low maxTweetsPerProfile value for your first run, review the rows, and then scale up carefully. Exact live pricing is shown on the Apify actor page before you start a run.

Input configuration

SettingJSON keyUse it forExample
Profile URLsprofileUrlsPublic X/Twitter profiles to scan.[{"url":"https://x.com/Apify"}]
Status URLsstatusUrlsOptional individual public tweet/status URLs to extract.[{"url":"https://x.com/Apify/status/1234567890"}]
Maximum tweets per profilemaxTweetsPerProfileCap visible tweets saved from each profile URL.10
Include repliesincludeRepliesKeep or skip tweets detected as replies.true
Maximum run timemaxRuntimeSecondsOptional 45–270 second work budget; unfinished URLs are checkpointed.45
Resume pending workresumeStateOptional PENDING_WORK checkpoint from an interrupted run.{"pendingUrls":["https://x.com/Apify"]}
Proxy configurationproxyConfigurationOptional Apify Proxy settings for public page requests.{"useApifyProxy":true}

Example input

{
"profileUrls": [
{ "url": "https://x.com/Apify" }
],
"statusUrls": [],
"maxTweetsPerProfile": 10,
"includeReplies": true,
"proxyConfiguration": {
"useApifyProxy": true
}
}

Example output

{
"profileUrl": "https://x.com/Apify",
"username": "Apify",
"displayName": "Apify",
"tweetId": "1234567890123456789",
"tweetUrl": "https://x.com/Apify/status/1234567890123456789",
"text": "Build web scrapers, automations, and data extraction workflows with Apify.",
"createdAt": "Jul 3",
"replyCount": 2,
"repostCount": 6,
"likeCount": 42,
"viewCount": 1200,
"mediaUrls": [],
"isReply": false,
"scrapedAt": "2026-07-03T10:00:00.000Z"
}

Tips for better results

  • Start with one profile: Test a public profile URL and a small maxTweetsPerProfile value.
  • Use status URLs for exact posts: Add statusUrls when you need specific tweet IDs instead of recent visible profile posts.
  • Expect visible-page limits: The actor extracts what is visible in public page HTML, not an authenticated full archive.
  • Filter replies intentionally: Set includeReplies to false for brand-feed monitoring when replies are less useful.
  • Review null metrics: Engagement counts can be null when X does not render them in the public page response.
  • Resume an interrupted batch: Copy the PENDING_WORK record into resumeState to retry only unfinished public URLs.
  • Bound a batch deliberately: Set maxRuntimeSeconds to 45–270 when you want a short, checkpointed run instead of using the full platform timeout.

Limits and practical notes

  • The actor extracts public X/Twitter pages only.
  • It does not log in, access private profiles, scrape protected tweets, or bypass account restrictions.
  • X page markup, visibility, rate limits, and anti-bot behavior can change.
  • Very old posts or infinite-scroll content may not be visible from the first public page response.
  • Counts and date labels are public-page values and can differ from logged-in or localized views.

API usage

cURL

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~x-profile-tweets-scraper/runs?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"profileUrls":[{"url":"https://x.com/Apify"}],"maxTweetsPerProfile":10,"includeReplies":true}'

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/x-profile-tweets-scraper').call({
profileUrls: [{ url: 'https://x.com/Apify' }],
maxTweetsPerProfile: 10,
includeReplies: true
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("fetch_cat/x-profile-tweets-scraper").call(run_input={
"profileUrls": [{"url": "https://x.com/Apify"}],
"maxTweetsPerProfile": 10,
"includeReplies": True,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

MCP and AI agents

Use this actor from MCP-compatible tools through Apify MCP Server.

MCP URL:

https://mcp.apify.com?tools=fetch_cat/x-profile-tweets-scraper

Example prompts:

  • "Scrape visible public tweets from this profile and summarize recent product mentions."
  • "Extract these public status URLs and return tweet text plus engagement counts."
  • "Monitor these public X profiles weekly and flag posts with media URLs."

Legality and responsible use

This actor extracts publicly visible X/Twitter page data.

Use the data responsibly, follow X's terms, Apify's terms, and applicable privacy, platform, copyright, and anti-spam laws.

Do not use exported data for harassment, spam, credential collection, or attempts to access private content.

Explore related actors from the same Apify account:

Support

If a run fails, returns no tweets for a public profile, or a field looks wrong, open an issue from the Actor page.

Please include the Apify run ID, input JSON, one example public profile or status URL, what you expected, and what the dataset returned. Small reproducible inputs make X layout or parsing issues much faster to fix.