X / Twitter Posts Scraper — Profile & Post URLs avatar

X / Twitter Posts Scraper — Profile & Post URLs

Pricing

from $0.09 / 1,000 item processeds

Go to Apify Store
X / Twitter Posts Scraper — Profile & Post URLs

X / Twitter Posts Scraper — Profile & Post URLs

Export public X/Twitter posts from profile or post URLs, with text, authors, engagement counts, and media links. Download JSON or CSV. Search queries are not supported.

Pricing

from $0.09 / 1,000 item processeds

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

a day ago

Last modified

Share

Export public X (Twitter) posts from supplied profile or individual post URLs. Get post text, author details, visible engagement counts, media links, and source metadata for research or monitoring.

Public profile and post URLs only: X search queries and search-result URLs are not supported. No protected or login-only content is included.

Ready-to-run examples

Open a saved example to inspect its inputs, then adjust the limits and filters for your own run. Examples are starting points; source availability can change.

View all ready-to-run examples

Quick start

{
"startUrls": [
{
"url": "https://x.com/elonmusk"
}
],
"maxItems": 5
}

Output dataset

Illustrative shortened post record; the example text, author, and counts are not live evidence.

{
"id": "2093127984701989032",
"url": "https://x.com/example/status/2093127984701989032",
"text": "Example public post text",
"createdAt": "2026-08-28T00:06:14.000Z",
"likeCount": 40194,
"repostCount": 3852,
"author": { "username": "example", "name": "Example Author" },
"sourceType": "profile"
}
FieldDescription
id, url, twitterUrl, textStable post identity, canonical links, and public post text.
createdAt, langPublication timestamp and language when the public response provides them.
replyCount, repostCount, likeCount, quoteCount, bookmarkCount, viewCountVisible engagement metrics; unavailable values are null.
isReply, isRetweet, isQuotePost relationship flags where publicly detectable.
mediaUrlsUnique public media URLs attached to a post.
authorPublic author ID, username, display name, profile URL/image, follow counts, and verification flags when available.
sourceUrl, sourceType, paginationCursor, scrapedAt, partialSourceFailureRequested source, source mode, collection time, and partial-run indicator. paginationCursor records the public cursor used for a continued profile page, or is null for the first page/status URLs.

Input settings

SettingJSON keyType / defaultWhat it does
Start URLsstartUrlsarray / not setPublic X / Twitter tweet profile or status URLs for social listening, tweet monitoring, and content research. Search URLs are not supported because X requires login for search.
Maximum itemsmaxItemsinteger / 10Maximum public X / Twitter tweets to save from supported anonymous profile pages (1–100). The Actor follows bounded public timeline cursors while they advance. Minimum 1; maximum 100.

Pricing

The start event is charged once for a valid run. The item event applies to each exported post. Failed sources are not themselves paid post records; successfully saved posts remain billable in a partial run.

See the live Pricing tab for current rates and discounts. Check the cost shown for your account before scaling a run; any applicable platform usage is shown by Apify separately.

Why use this X tweet scraper?

  • Export public post text, canonical links, author details, visible engagement, and media URLs.
  • Start from public profile URLs or direct /status/<id> links.
  • Keep requested source URLs and collection timestamps alongside every saved record.
  • Deduplicate posts across multiple supplied sources in one run.

Use cases

A Twitter tweet scraper workflow can monitor posts from a public company, creator, or community account. An X profile scraper workflow can turn a supplied public account URL into a compact, reusable post dataset.

  • Monitor posts from a public company, creator, or community account.
  • Build a research dataset for content analysis or reporting.
  • Preserve public post references for editorial review.
  • Send normalized public post data to spreadsheets, databases, or automation workflows.

Tips

  • Supply one or more direct public profile or post URLs in startUrls.
  • Use direct status URLs when you need a single public post.
  • X search URLs and query strings are not supported in this version because a stable anonymous result route is not available.
  • Review partialSourceFailure and the RUN_SUMMARY record when a multi-source run has mixed results.

Who is it for?

This Actor is for social media teams, researchers, analysts, and automation builders who need a repeatable export of public X posts from known profiles or status links. It is not a search engine and does not collect protected or login-only posts.

Start on Apify

  1. Open X Tweet Scraper in the Apify Store and click Try for free.
  2. Add one or more public profile or direct status URLs under Start URLs.
  3. Set a low maxItems first, then run the Actor and export the default dataset as JSON or CSV.

FAQ

Can I scrape X search results?

No. This version supports public profile and direct status URLs only. It rejects search URLs rather than returning a login page or unrelated records.

Can I use the Actor via API or MCP?

Yes. Submit the same input through the Apify API, retrieve the default dataset, or enable this Actor in an Apify MCP tool selection.

What happens if one source fails?

Completed posts are retained. Check partialSourceFailure and RUN_SUMMARY to identify a source that was private, deleted, rate-limited, or no longer publicly available.

Is this for public data only?

Yes. Do not use it to access protected content, bypass access controls, or collect data in violation of applicable laws or platform terms.

API usage

Use your Apify API token through the APIFY_TOKEN environment variable. Node.js and Python examples wait for the run and read its first dataset page; paginate the dataset for larger exports.

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/tweet-scraper').call({
"startUrls": [
{
"url": "https://x.com/elonmusk"
}
],
"maxItems": 5
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import json
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run_input = json.loads('''{
"startUrls": [
{
"url": "https://x.com/elonmusk"
}
],
"maxItems": 5
}''')
run = client.actor("fetch_cat/tweet-scraper").call(run_input=run_input)
print(client.dataset(run["defaultDatasetId"]).list_items().items)

cURL

Save the quickstart JSON as input.json. This request starts a run asynchronously; use its returned run ID to check completion and its defaultDatasetId to retrieve results.

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~tweet-scraper/runs" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
--data-binary @input.json

MCP and AI agents

Use the official Apify MCP server, not a separate custom server. The focused URL below selects this Actor. Authenticate with Apify when your client prompts you; configuration syntax and OAuth support depend on the client.

Claude Code

$claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/tweet-scraper"

HTTP-capable MCP client configuration

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/tweet-scraper"
}
}
}

Example prompt: "Export up to five posts from this public X profile URL. Show post text, dates, engagement, and source links; flag partial results."

Use the same input keys as the input table. Review the returned source URLs and any error or availability fields before using results in an automated summary.

Support

If a run fails or output looks wrong, open an issue from the Actor page. Include the Apify run ID or run URL, non-sensitive input JSON, expected output, actual output, and one reproducible public URL (or the exact search input). Do not share tokens, cookies, passwords, or private data.