X Profile Tweets Scraper

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

Data fields

FieldTypeDescription
profileUrlstringSource X/Twitter profile URL when the tweet came from a profile page.
usernamestringX/Twitter username for the tweet author.
displayNamestringDisplay name shown for the tweet author.
tweetIdstringTweet or status ID.
tweetUrlstringPublic X/Twitter status URL.
textstringTweet text extracted from the public page.
createdAtstringVisible date or time label from the public page.
replyCountintegerReply count when visible.

Input preview

profileUrlsProfile URLs
statusUrlsStatus URLs
maxTweetsPerProfileMaximum tweets per profile
includeRepliesInclude replies
proxyConfigurationProxy configuration

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

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.

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.

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.

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.

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.

Common questions

Search-intent answers for buyers comparing Apify actors, API alternatives, and scheduled data workflows.

Can I export X Profile Tweets Scraper results to CSV, JSON, Excel, or API?

Yes. Apify datasets support JSON, CSV, Excel, XML, RSS, API access, webhooks, and scheduled exports.

Can this work as an API alternative?

Yes. Use the Apify Actor API for runs and the dataset API for results. The focused MCP URL also exposes this actor for agent workflows.

Does this page replace the Apify actor page?

No. This catalog helps discovery and comparison. Running, billing, storage, and support continue through Apify.