Twitter (X) Screenshot Generator

Capture clean screenshots of public X posts and profiles without login. Choose post cards, profile headers or full profile pages, dark/light theme, PNG/JPEG/WEBP output, 2x/3x pixel density and optional profile or post details.

Open in Apify Store$0.99 / 1K on Free

Short answer

Twitter (X) Screenshot Generator is an Apify Store Actor for X (Twitter) data that returns 59 published output fields, including targetUrl, profileUrl, requestedUrl, canonicalUrl. It lists $0.99 per 1,000 results on the Free plan (pay per event), $0.49 on the Business plan. It takes 17 input settings, none required. It covers 2 of the 7 core X (Twitter) fields this site tracks. Last updated Nov 9, 2026.

From the public Store listing and published build schema, synced 2026-11-12.
X (Twitter) Social mediaAutomationDeveloper tools

What it returns

59 fields from the published dataset schema. Export as JSON, CSV or Excel, or read the dataset through the Apify API.

  • typescreenshot for a captured image, status for a failure/run message, runSummary for end-of-run totals.
  • targetUrlThe Twitter/X post or profile URL that was captured
  • profileUrlThe profile URL when a profile was captured
  • captureModepostCard, thread, profileHeader (header only) or fullProfilePage (loaded preview)
  • statusResult status (success or a friendly error description)
  • codeTyped failure code: not_found, protected, deleted, login_wall, wrong_author, wrong_target, selector_miss, media_error, browser_crash, network_error, invalid_input or capture_error
  • messageHuman-readable failure message
  • billableTrue only for captured screenshot rows; status and summary rows are not billable
  • accessStatepublic, protected, deleted, not_found or login_wall
  • requestedUrlThe input URL as requested, when the canonical URL differs
  • canonicalUrlThe canonical X URL X actually served
  • effectiveScaleActual image pixels per CSS pixel (image width / clipped CSS width)
  • previewLimitedTrue when a profile capture hit the logged-out preview cap
  • previewLimitReasonWhy the profile capture is a preview rather than the full timeline
  • threadThread capture details: focalIndex, threadAuthor, threadLength, threadParts, gateIndex, threadComplete, truncatedReason (non_author_reply, gate, max_height, dpr_height_limit or no_parts)
  • threadIdFocal post id for a thread capture
  • capturedPostCountPosts rendered in the profile capture
  • profilePostCountPost count shown in the profile header
  • requestedTargets requested in the run
  • capturedScreenshots captured in the run
  • failedTargets that failed with a typed status code
  • skippedInputs dropped during validation
  • billableScreenshotsNumber of captured, billable screenshots in the run
  • failureCodesCount of each typed failure code
  • invalidInputsInputs dropped during validation with a reason
  • totalBytesCombined size of all captured images
  • widthWidth of the captured image in pixels
  • heightHeight of the captured image in pixels
  • filenameFile name of the screenshot in the key-value store
  • downloadUrlPublic signed HTTPS URL to download the screenshot file (omitted for local file:// URLs and when signing fails)
Show the other 29 fields
  • capturedAtISO timestamp when the screenshot was taken
  • tweetIdNumeric post id (when Include post/profile details is on)
  • tweetUrlCanonical post URL (when Include post/profile details is on)
  • authorUsernamePost author handle (when Include post/profile details is on)
  • textSnippetFirst characters of the post text (when Include post/profile details is on)
  • pollPoll choices, percentages, vote total and finality when X renders or syndicates poll data (when Include post/profile details is on)
  • communityNoteReaders-added-context note id and text when X shows one (when Include post/profile details is on)
  • usernameProfile handle (when Include post/profile details is on)
  • nameProfile display name (when Include post/profile details is on)
  • followersFollower count (when Include post/profile details is on)
  • followingAccounts followed (when Include post/profile details is on)
  • postCountProfile post count (when Include post/profile details is on)
  • authorFollowersPost author follower count (when Include post/profile details is on)
  • authorFollowingPost author following count (when Include post/profile details is on)
  • authorPostCountPost author post count (when Include post/profile details is on)
  • formatSaved image format (png, jpeg or webp)
  • qualityJPEG/WEBP quality setting
  • fileSizeBytesSize of the saved screenshot in bytes
  • deviceScaleFactorDevice scale factor used for the capture (effective value)
  • themedark, light or system (the captured theme on each row)
  • themesThemes captured in the run; both dark and light when Both themes is on
  • screenshotSha256SHA-256 of the saved screenshot bytes (when Include evidence pack is on)
  • domSnapshotSha256SHA-256 of the raw DOM snapshot before gzip (when Include evidence pack is on)
  • evidenceKeyKey-value store key of the gzipped DOM snapshot (when Include evidence pack is on)
  • manifestKeyKey-value store key of the JSON evidence manifest (when Include evidence pack is on)
  • evidenceErrorWhy the evidence files could not be written, when Include evidence pack is on
  • totalDurationMsTotal capture duration in milliseconds
  • startedAtISO timestamp when the run started
  • finishedAtISO timestamp when the run finished

Not in the schema among the core X (Twitter) fields: post_id, text, posted_at, likes, reposts. The field matrix shows which other tools return them.

How it differs from the other X (Twitter) Actors

Among the 12 catalogue Actors for X (Twitter) with a published schema, only this one returns captureMode, billable, effectiveScale, previewLimited, previewLimitReason, thread, threadId, requested.

Pick another Actor if you need

Fields other X (Twitter) catalogue Actors return that Twitter (X) Screenshot Generator does not
ActorFields it addsPrice / 1K
Twitter (X) Media Downloader mediaUrl, mediaUrlOriginal, thumbnailUrl, posterImageUrl $0.99
X Post, Reply & Profile Lookup by Link or ID createdAt, likeCount, retweetCount, replyCount $0.99
X (Twitter) Profile & Post Engagement Extractor createdAt, likeCount, retweetCount, replyCount $0.99
X Video Subtitle & Caption Transcript Converter videoIndex, videoSource, language, captionSource $0.99
X/Twitter Keyword & Hashtag Tweet Search createdAt, language, replyCount, retweetCount $0.99

Input

Input settings for Twitter (X) Screenshot Generator
SettingTypeRequiredDefaultWhat it does
postUrls array No [] Posts to capture as clean post cards. Paste x.com or twitter.com links, bare numeric post IDs, profile links or bare usernames. Any input works in every list.
tweetUrls array No [] Alias of X post links. Accepts tweet links, bare tweet IDs, profile links and bare usernames.
profileUrls array No [] Optional. Profiles to capture. Paste profile links, bare usernames, post links or post IDs and the actor routes them to the right capture. Use capture mode to choose the header only or the loaded profile preview.
captureMode string No postCard What to capture. Post links produce a single post card or a thread image; profile modes apply to profile links (and convert post links to the author profile).
theme string No dark Color theme for the screenshot.
bothThemes boolean No false When on, every target is captured twice: once in dark and once in light. Files and rows are unique per theme (one screenshot row per theme) and the run summary reports both themes. Overrides the Theme selection.
includeEvidence boolean No false Save a gzipped DOM snapshot and a JSON manifest to the key-value store for every capture, and add screenshotSha256, domSnapshotSha256, evidenceKey and manifestKey to each row. Failures still get a manifest with the typed failure state.
fullPage boolean No false When on, the whole page is captured instead of just the post card or the visible profile header.
hideReplies boolean No true Hide reply posts so screenshots stay focused on original posts.
includeMetadata boolean No false Add details to each row: post id, post URL, author handle, text snippet and the author's follower, following and post counts for posts; username, display name, follower, following and post counts for profiles. Counts are only added when X shows them.
Show the other 7 settings
More input settings for Twitter (X) Screenshot Generator
SettingTypeRequiredDefaultWhat it does
format string No png File format of the saved screenshot. JPEG and WEBP support the quality setting; PNG is lossless.
quality integer No 90 Quality for JPEG and WEBP output (1-100). Ignored for PNG.
deviceScaleFactor string No 1x Render the page at a higher pixel density for sharper screenshots. 2x doubles and 3x triples the pixel dimensions.
viewportWidth integer No 1440 Browser width used for the capture. Higher values fit more of the page.
viewportHeight integer No 900 Browser height used for the capture.
maxThreadHeight integer No 8000 Maximum thread column height in CSS pixels; the saved image is DPR times taller. The value is clamped so the image cannot exceed the 32,767 px screenshot ceiling (10,922 CSS px at 3x). Taller threads are clipped and the row reports threadComplete=false with the truncation reason.
proxyConfiguration object No – Optional. Use a proxy if you plan large runs or see frequent rate limits.

Example input

Built from the input form's published example values and defaults.

{
  "postUrls": [
    "https://x.com/NASA/status/2107095768821576019"
  ],
  "tweetUrls": [],
  "profileUrls": [],
  "captureMode": "postCard",
  "theme": "dark",
  "bothThemes": false,
  "includeEvidence": false,
  "fullPage": false,
  "hideReplies": true,
  "includeMetadata": false,
  "format": "png",
  "quality": 90,
  "deviceScaleFactor": "1x",
  "viewportWidth": 1440,
  "viewportHeight": 900,
  "maxThreadHeight": 8000
}

Run it from code or an AI agent

The same run through the Apify API, with the example input. You need an Apify API token; the run is billed to your account at the Store price.

Python

from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
    "postUrls": [
        "https://x.com/NASA/status/2107095768821576019"
    ],
    "tweetUrls": [],
    "profileUrls": [],
    "captureMode": "postCard",
    "theme": "dark",
    "bothThemes": False,
    "includeEvidence": False,
    "fullPage": False,
    "hideReplies": True,
    "includeMetadata": False,
    "format": "png",
    "quality": 90,
    "deviceScaleFactor": "1x",
    "viewportWidth": 1440,
    "viewportHeight": 900,
    "maxThreadHeight": 8000
}

run = client.actor("nimbryxo-studio/twitter-x-screenshot-generator").call(run_input=run_input)
if run is None:
    raise RuntimeError("The Actor run was not found.")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

pip install apify-client

JavaScript

import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: "<YOUR_APIFY_TOKEN>" });
const input = {
    "postUrls": [
        "https://x.com/NASA/status/2107095768821576019"
    ],
    "tweetUrls": [],
    "profileUrls": [],
    "captureMode": "postCard",
    "theme": "dark",
    "bothThemes": false,
    "includeEvidence": false,
    "fullPage": false,
    "hideReplies": true,
    "includeMetadata": false,
    "format": "png",
    "quality": 90,
    "deviceScaleFactor": "1x",
    "viewportWidth": 1440,
    "viewportHeight": 900,
    "maxThreadHeight": 8000
};

const run = await client.actor("nimbryxo-studio/twitter-x-screenshot-generator").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

npm install apify-client

cURL

curl -X POST "https://api.apify.com/v2/actors/nimbryxo-studio~twitter-x-screenshot-generator/run-sync-get-dataset-items"   -H "Authorization: Bearer $APIFY_TOKEN"   -H "Content-Type: application/json"   -d '{"postUrls":["https://x.com/NASA/status/2107095768821576019"],"tweetUrls":[],"profileUrls":[],"captureMode":"postCard","theme":"dark","bothThemes":false,"includeEvidence":false,"fullPage":false,"hideReplies":true,"includeMetadata":false,"format":"png","quality":90,"deviceScaleFactor":"1x","viewportWidth":1440,"viewportHeight":900,"maxThreadHeight":8000}'

Waits for the run and returns the dataset items (runs over 300 seconds return HTTP 408; start an async run instead).

MCP (AI agents)

{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=nimbryxo-studio/twitter-x-screenshot-generator",
      "headers": {
        "Authorization": "Bearer <YOUR_APIFY_TOKEN>"
      }
    }
  }
}

Adds this Actor as a tool in an MCP client that takes a remote server URL (Cursor, VS Code, Claude Code) through Apify's hosted MCP server. OAuth sign-in also works without the header. Clients that only start local servers can wrap the URL with npx mcp-remote.

What a run costs

The result rate falls on higher Apify plans. Each figure is the published per-result rate times the number of results.

Cost of Twitter (X) Screenshot Generator results by Apify plan
Apify planPer 1,00010,000 results100,000 results
Free plan$0.99$9.90$99
Starter plan$0.82$8.20$82
Scale plan$0.66$6.60$66
Business plan$0.49$4.90$49
  • Every run also has a start event, charged per GB of memory (minimum one): $0.10 on Free, $0.03 on Business. At its default memory of 4 GB a run starts at $0.40 on Free. Fewer, larger runs keep this small.
  • The Free plan includes $5 of monthly usage (Apify pricing, checked 2026-11-11); at the Free rate that covers at most about 5,050 results, less start events and platform usage.
  • Worked example: 10,000 results in one run on the Free plan cost $10.30 ($9.90 for results + $0.40 start), plus Apify platform usage (compute), billed separately by Apify.
  • Pay per event. Platform usage (compute) is billed by Apify on top of the event prices. Compare other tools in the cost estimator.

Where it fits among X (Twitter) routes

It ranks 10 of 12 catalogue Actors for X (Twitter) on the published formula (fields, price, reliability, freshness). Its line is highlighted on the map.

Route diagram for X (Twitter) dataTwitter (X) Media Downloader: stops at 4 of the 10 fields shown; X Post, Reply & Profile Lookup by Link or ID: stops at 6 of the 10 fields shown; X (Twitter) Profile & Post Engagement Extractor: stops at 6 of the 10 fields shown; Twitter (X) Screenshot Generator: stops at 1 of the 10 fields shown; Other Store tools (7): stops at 8 of the 10 fields shown; X API v2: public, field coverage not compared.X (Twitter)post idtextauthorlikesposted atrepostscreatedAtlikeCountretweetCountreplyCount12310+API

Stops are fields. A ring means the field is in that route's published output schema; no ring means the line passes without it. Bold labels are the core fields for this website, the rest are fields that differ between routes. A white capsule means every data line stops there. The red line is the official API; its field coverage is not compared. A crossed red line means there is no open official API.

Official route: X API v2

Public API. X API v2 uses prepaid pay-per-usage credits. Published standard read rates include $0.005 per Post resource and $0.010 per User resource. Pay-per-use launched on February 6, 2026; legacy Basic and Pro plans migrated to pay-per-use.

Charged per resource returned: $0.005 per Post, $0.010 per User. Owned Reads on qualifying own-account endpoints are $0.001 per resource. A 3 million Post-read monthly cap applies to self-serve pay-per-use.

Official documentation

Other Store tools for X (Twitter)

Reference only, from their public listings.

Other Store tools for X (Twitter)
ToolFieldsPrice / 1K
X (Twitter) Tweet Scraper120$0.15
Tweet Scraper17$0.25
Tweet Scraper V212$0.40
Twitter (X.com) Scraper Unlimited: No Limits12$0.40
Twitter (X) Follower Scraper29$0.15

What people use it for

X screenshot records provide captured post or profile URLs, image filenames, dimensions, capture timestamps and download links when available, alongside status and summary rows. Reports that need a rendered post card, contiguous same-author thread or profile header benefit from these captures, while the catalogue's lookup and media tools return structured post data or source media files.

The published schema requires no input; use postUrls or profileUrls to specify public X posts or profiles to capture.

  • Illustrate a report with post captures identified by targetUrl, filename and capturedAt.
  • Compare saved profile captures using profileUrl, capturedPostCount and previewLimited.
  • Review capture failures by code and accessState, then compare them with captured and failed run totals.
  • Capture post screenshots
  • Capture profile screenshots
  • Preserve public evidence

Tips

  • Set captureMode to select a post card, thread, profile header or loaded profile preview.
  • Enable bothThemes to capture each target in dark and light, with separate files and screenshot rows for each theme.

Other catalogue Actors for X (Twitter)

Twitter (X) Media Downloader

Download videos, photos, GIFs, audio and poster images from public Twitter/X posts - no login, no cookies. Works with post links or usernames,…

3/7 core fields 27 output fields $0.99 per 1K

X Post, Reply & Profile Lookup by Link or ID

Resolve X post links or IDs into text, author, media, polls, quoted/parent posts, engagement metrics and replies, or resolve a handle into that…

3/7 core fields 9 output fields $0.99 per 1K

X (Twitter) Profile & Post Engagement Extractor

Get any public X profile - bio, followers, verification, avatar, banner - plus latest, top and media posts with full engagement metrics. No login…

3/7 core fields 29 output fields $0.99 per 1K

X Video Subtitle & Caption Transcript Converter

Convert public X (Twitter) videos into timestamped transcripts and downloadable SRT/VTT subtitle files, using native captions when available and…

3/7 core fields 29 output fields $0.99 per 1K

X/Twitter Keyword & Hashtag Tweet Search

Search X (Twitter) by keyword, phrase or hashtag and get tweet text, author, engagement metrics, media and language. Every row says which keyword…

3/7 core fields 18 output fields $0.99 per 1K

X Keyword Search with Mention & Reply Operators

Search X (Twitter) by keyword with filters for date, language, engagement, media, verification, mentioned handle, author, reply target, and…

3/7 core fields 21 output fields $0.99 per 1K

Bluesky Posts, Profiles, Feeds & Threads Scraper

Search Bluesky posts by keyword, hashtag, author, mention, domain or URL; read profiles, threads, lists, starter packs, feeds and followers;…

8 output fields $0.99 per 1K

StockTwits Ticker Sentiment & Trending Symbol Feed

Reads StockTwits' public message stream for any ticker or user, the market-wide trending-symbols list with trend summaries, and ticker search,…

12 output fields $0.99 per 1K

Twitter (X) Space Scraper

Collect public X Spaces without login. Get the Space title, state, schedule, live and replay listener counts, host and participants, replay audio…

8 output fields $0.99 per 1K

Facebook Page & Profile Finder by Keyword or URL

Find Facebook Pages or public profiles by keyword, or scrape a list of Facebook URLs directly, and get back contact info, category, ratings,…

10 output fields $0.99 per 1K

Instagram Downloader API - Reels, Video & Photo

Download Instagram photos, videos, Reels and carousel posts from post links or usernames, up to 100 of each per run. Public posts and profiles…

11 output fields $0.49 per 1K

Instagram Profile Scraper - Bio & Posts

Scrape public Instagram profiles from a list of usernames: bio, followers, following, post count, verified badge and bio links. Add recent posts…

25 output fields $0.70 per 1K

Questions people ask

Will a profile capture contain the full timeline?

fullProfilePage captures the loaded profile preview. previewLimited and previewLimitReason report when a capture reaches the logged-out preview cap.

Can I preserve supporting evidence with a screenshot?

Enable includeEvidence to save a gzipped DOM snapshot and a JSON manifest for each capture. The option adds screenshot and DOM hashes plus evidence and manifest keys to the capture row.

How much does Twitter (X) Screenshot Generator cost?

The published result rate depends on your Apify plan: $0.99 per 1,000 on Free, $0.82 per 1,000 on Starter, $0.66 per 1,000 on Scale, $0.49 per 1,000 on Business. So 10,000 results cost about $9.90 on the Free plan and $4.90 on Business, plus a start fee of $0.10 per run per GB of memory on Free. Platform usage is billed separately.

What data does Twitter (X) Screenshot Generator return?

Its published output schema lists 59 fields: type, targetUrl, profileUrl, captureMode, status, code, message, billable, accessState, requestedUrl, canonicalUrl, effectiveScale, and 47 more. A listed field is not guaranteed to be filled in every row.

What input does Twitter (X) Screenshot Generator need?

No input is strictly required; the defaults run as is. Common settings: postUrls, tweetUrls, profileUrls, captureMode, theme, bothThemes.

What are the alternatives to Twitter (X) Screenshot Generator for X (Twitter)?

12 catalogue Actors cover X (Twitter). Close alternatives: Twitter (X) Media Downloader; X Post, Reply & Profile Lookup by Link or ID; X (Twitter) Profile & Post Engagement Extractor. The X (Twitter) page compares all of them field by field.

How do I run Twitter (X) Screenshot Generator from Python or the API?

Use the Apify API client: in Python, ApifyClient(token).actor("nimbryxo-studio/twitter-x-screenshot-generator").call(run_input=...), then read the run's default dataset (run.default_dataset_id); in JavaScript the same call is client.actor("nimbryxo-studio/twitter-x-screenshot-generator").call(input). Without a client, POST the input JSON to https://api.apify.com/v2/actors/nimbryxo-studio~twitter-x-screenshot-generator/run-sync-get-dataset-items with your API token. Ready-to-paste code with the example input is on this page.

Sources

Actor updated 2026-11-09 Data synced 2026-11-12 Text updated 2026-11-12
Cite this page

Scraper Finder. "Twitter (X) Screenshot Generator." https://scraperfinder.com/catalogue/twitter-x-screenshot-generator/ (data checked 2026-11-12).

Run Twitter (X) Screenshot Generator

$0.99 per 1,000 results. Paste the example input above, set your X (Twitter) query, then export the dataset. Still choosing? Compare every X (Twitter) route.

Open in Apify Store