Twitter/X Tweet Details Scraper · URL or ID avatar

Twitter/X Tweet Details Scraper · URL or ID

Pricing

from $0.55 / 1,000 tweet details

Go to Apify Store
Twitter/X Tweet Details Scraper · URL or ID

Twitter/X Tweet Details Scraper · URL or ID

Turn public X/Twitter post URLs or numeric tweet IDs into clean tweet, author, engagement, media, and entity records. Built for one-off checks and bounded batches up to 100 inputs.

Pricing

from $0.55 / 1,000 tweet details

Rating

0.0

(0)

Developer

Data Slayer

Data Slayer

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 hours ago

Last modified

Share

Turn public X/Twitter post URLs or numeric tweet IDs into clean tweet, author, engagement, media, and entity records—one unique post per dataset row.

Watch the demo

YouTube video coming soon.

What this Actor does

Use this Actor when you already know the posts you need and want their current public details without running a broad search. It is designed for one-off checks, spreadsheet enrichment, webhook follow-ups, and bounded batches of up to 100 inputs.

For every available public post, the default dataset receives one normalized row with:

  • post ID, canonical URL, text, timestamp, language, and conversation ID;
  • reply, quote, repost, and sensitive-content flags;
  • likes, replies, reposts, quotes, bookmarks, and views when available;
  • author ID, username, display name, verification state, and profile image;
  • attached media metadata; and
  • hashtags, mentions, and expanded URLs.

Thread and reply expansion is intentionally not included. Use a replies/comments workflow when you need the surrounding conversation.

Input

FieldTypeRequiredDefaultLimitsPurpose
tweetUrlsOrIdsarray of stringsyes—1–100 entries; each ≤300 charactersNumeric tweet IDs or public x.com / twitter.com status URLs. Duplicate IDs are processed once.
maxInputsintegerno1001–100Hard cap on unique inputs processed in the run.

Valid input:

{
"tweetUrlsOrIds": [
"https://x.com/NASA/status/1967659798526656877",
"1967659798526656877"
],
"maxInputs": 100
}

Supported URL forms include x.com/<user>/status/<id>, twitter.com/<user>/status/<id>, and mobile.twitter.com/<user>/status/<id>. Other domains and non-status URLs are rejected before any lookup.

Output

Each available unique post creates one paid row in the default dataset.

FieldTypeNullableDescription
tweetIdstringnoStable numeric post ID and dataset identity.
urlstringnoCanonical public post URL.
textstringyesPublic post text.
createdAtstringyesPublication time as returned for the post.
languagestringyesLanguage code when available.
conversationIdstringyesConversation root identifier when available.
inReplyToTweetIdstringyesParent post ID for a reply.
isReply, isQuote, isRetweet, sensitivebooleannoPost-type and sensitive-content flags.
metricsobjectnoNullable integer counts for likes, replies, reposts, quotes, bookmarks, and views.
authorobjectnoNullable author ID, username, display name, verification state, and profile image URL.
mediaarraynoMedia type, URL, preview URL, dimensions, and duration when available.
entitiesobjectnoHashtags, mentions, and expanded URLs.
requestedInputstringnoThe first submitted value that resolved to this unique post.
retrievedAtstringnoUTC time when the row was normalized.

Example:

{
"tweetId": "1967659798526656877",
"url": "https://x.com/NASA/status/1967659798526656877",
"text": "A sample public post used to illustrate the output contract.",
"createdAt": "2026-09-15T14:30:00Z",
"language": "en",
"conversationId": "1967659798526656877",
"inReplyToTweetId": null,
"isReply": false,
"isQuote": false,
"isRetweet": false,
"sensitive": false,
"metrics": {
"likeCount": 125,
"replyCount": 9,
"retweetCount": 21,
"quoteCount": 4,
"bookmarkCount": 7,
"viewCount": 18420
},
"author": {
"userId": "11348282",
"username": "NASA",
"name": "NASA",
"verified": true,
"profileImageUrl": "https://pbs.twimg.com/profile_images/example.jpg"
},
"media": [],
"entities": {"hashtags": ["Space"], "mentions": [], "urls": []},
"requestedInput": "https://x.com/NASA/status/1967659798526656877",
"retrievedAt": "2026-09-21T00:00:00.000Z"
}

The example is illustrative and validates the proposed schema; it is not a live result claim.

Empty, unavailable, partial, and failed runs

Invalid input stops before lookup. Deleted, private, missing, or otherwise unavailable posts do not become dataset rows and are not charged as tweet details. Their safe per-input outcomes remain in the free RUN_SUMMARY key-value record.

The summary distinguishes succeeded, partial, empty, failed, charge_limit_reached, billing_uncertain, and cancelled. It reconciles delivered and charged tweet rows. If the billing limit prevents a dataset push, no delivered row is counted. If a storage or billing response leaves the write outcome uncertain, the Actor stops and marks the state billing_uncertain; it does not retry or claim delivery for the possibly completed row. A response whose tweet ID differs from the requested ID is rejected before delivery or charging.

Pricing

Pay per event. The Actor-start event is charged per GB of run memory, with a minimum of one event. The proposed 256 MB default therefore incurs one start event; choosing more than 1 GB can multiply it. A tweet-detail event is charged for each successfully delivered unique dataset row. Unavailable, invalid, failed, and duplicate inputs are not charged as tweet details.

PlanActor startPer tweet detail1 detail100 details
Free$0.0025$0.00075$0.00325$0.07750
Bronze$0.0023$0.00065$0.00295$0.06730
Silver$0.0021$0.00060$0.00270$0.06210
Gold$0.0020$0.00055$0.00255$0.05700
Platinum$0.0020$0.00055$0.00255$0.05700
Diamond$0.0020$0.00055$0.00255$0.05700

At the proposed 256 MB default, the input cap makes the maximum customer event charge for a 100-result run explicit. Increasing run memory above 1 GB can add start-event units. Platform compute usage, if any, is shown separately by Apify.

Reliability and limits

  • Transient rate-limit, server, and timeout failures use bounded retries and honor a short Retry-After value when provided.
  • Requests are paced conservatively within a run. Coverage and freshness still depend on what is publicly available at lookup time.
  • Duplicates are removed by tweet ID before lookup and again at delivery boundaries.
  • No private posts, deleted posts, complete historical snapshots, or thread completeness are promised.
  • Engagement counts can change after retrieval. Store tweetId as the stable join key and retrievedAt as the observation time.

Use from the API

After publication, call the Actor with your Apify token:

curl "https://api.apify.com/v2/acts/data-slayer~twitter-tweet-details/runs?token=<YOUR_APIFY_TOKEN>" \
-X POST \
-H "Content-Type: application/json" \
-d '{"tweetUrlsOrIds":["1967659798526656877"],"maxInputs":100}'

The proposed slug is not live yet. This endpoint becomes valid only after an authorized release.

FAQ

How much does it cost to run this Actor? Pricing is listed in the Pricing section above, charged per row returned. You only pay for the rows the Actor actually produces, so a small test run costs cents.

Do I need cookies or a login? No. This Actor reads public data only - no cookies, no account, no browser automation.

Can I schedule it? Yes. Run it from the Apify API, on a schedule, or via a webhook, and export results as JSON, CSV or Excel.

What if I need a slightly different output? Open an issue on the Actor's Issues tab describing the shape you need.

More Twitter actors from the same portfolio. Apify only auto-recommends actors in the same category, so here are the rest of ours:

Actor
Twitter/X Comments Scraper · No Cookies
Twitter/X Community Members Scraper · No Cookies
Twitter/X Engaged Audience Exporter · Replies + Retweeters
Twitter/X Followers Scraper · No Cookies
Twitter/X Following Scraper · Public Profiles
Twitter/X List Members Scraper · No Cookies
Twitter/X Profile Scraper · Bulk Handles, URLs & IDs
Twitter/X Search Scraper · Small Jobs & Advanced Queries
Twitter/X Trends Scraper · No Cookies
Twitter/X Tweets Scraper · No Cookies