X Articles to Markdown Scraper avatar

X Articles to Markdown Scraper

Pricing

from $2.55 / 1,000 markdown conversions

Go to Apify Store
X Articles to Markdown Scraper

X Articles to Markdown Scraper

Convert selected public X Articles to clean Markdown and plain text. Submit post IDs or status URLs and get source IDs, titles, authors, media and article links, dates, and public engagement counts when X exposes them. No X credential is needed.

Pricing

from $2.55 / 1,000 markdown conversions

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

a day ago

Last modified

Share

📝 Convert selected X Articles to Markdown

Researchers, writers, and developers can use this Actor to turn selected public X Articles into clean Markdown and plain text. Submit post IDs or status URLs and get each Article's content, source IDs, title, author details, media references, links, dates, and public engagement counts when X exposes them. Use the returned rows for notes, research, citations, or a publishing workflow.

📦 Markdown rows for selected X Articles

Each submitted source can produce one dataset row with its public X Article content and source context. The main output is clean Markdown plus plain text, with identifiers and useful public metadata alongside it.

Content

  • markdown keeps the Article body in readable Markdown.
  • plainText gives the Article body without Markdown formatting.
  • title and preview show the Article name and a short source preview when available.

Source context

  • sourceUrl, postId, and articleId identify the public source.
  • author can include the public name, username, profile links, verification, and follower count.
  • publishedAt and lastModifiedAt give Article dates when X exposes them.
  • coverImage and inlineImages contain source image URLs and dimensions when available. The Actor returns references, not downloaded media files.
  • links keeps link text and resolved outbound destinations from the Article body.
  • engagement contains public counts captured at extraction time when exposed.
  • extractedAt records when the Actor read the Article.

▶️ Run with public Article sources

  1. Enter one or more public X post IDs or status URLs.
  2. You can mix numeric IDs and URLs in the same input.
  3. Run the Actor and open the default dataset to review the Article rows.

The Actor reads Articles available to logged-out visitors. It does not search X, find Articles by author or timeline, or turn ordinary posts, threads, reposts, or link cards into Articles. It does not access private, protected, deleted, login-gated, geographic-restricted, subscriber-only, or paywalled content, or bypass CAPTCHA and other access restrictions.

⚙️ Input

Add the public Article sources you want to read. Each value can be a numeric X post ID or a public x.com or twitter.com status URL.

Input fields

FieldTypeWhat it does
articleSourcesarray of stringsAccepts one or more public X post IDs or status URLs. You can mix both forms in one run.

Example input

This example is copied from the public input of a successful current-beta run:

{
"articleSources": [
"https://x.com/trq212/status/2052809885763747935"
]
}

🧾 Output

The output schema exposes dataset, a URL that opens the default dataset view. Each dataset row uses the shape below. Optional fields may be absent when X does not expose them.

Dataset row

FieldTypeWhat it does
sourceUrlURLPublic X status URL for the Article source.
postIdstringStable ID of the public X post that contains the Article.
articleIdstringStable ID of the X Article.
titlestringTitle shown for the X Article.
previewstring, optionalShort preview text provided for the Article source when available.
markdownstringArticle body converted to readable Markdown.
plainTextstringPlain-text rendering of the Article body.
authorobject, optionalPublic identity and profile details for the Article author when available.
author.namestring, optionalPublic display name of the Article author when available.
author.usernamestring, optionalPublic X username of the Article author when available.
author.profileUrlURL, optionalPublic X profile URL for the Article author when available.
author.profileImageUrlURL, optionalSource URL of the author's public profile image when available.
author.isVerifiedboolean, optionalWhether X reports the Article author as verified.
author.followersCountinteger, optionalPublic follower count for the Article author.
publishedAtdate-time string, optionalTime when the Article was published when exposed by X.
lastModifiedAtdate-time string, optionalTime when the Article was last modified when exposed by X.
coverImageobject, optionalSource reference for the Article cover image when available.
coverImage.urlURLSource URL of the cover image.
coverImage.widthinteger, optionalCover image width in pixels when available.
coverImage.heightinteger, optionalCover image height in pixels when available.
inlineImagesarray of objectsSource references for images used inside the Article body.
inlineImages[].urlURLSource URL of an inline image.
inlineImages[].widthinteger, optionalInline image width in pixels when available.
inlineImages[].heightinteger, optionalInline image height in pixels when available.
linksarray of objectsLinks preserved from the Article body.
links[].textstringLink text shown in the Article body.
links[].urlURLResolved outbound destination of the link.
engagementobject, optionalPublic engagement counts captured when the Article was extracted when exposed by X.
engagement.replyCountinteger, optionalPublic reply count for the containing X post.
engagement.repostCountinteger, optionalPublic repost count for the containing X post.
engagement.likeCountinteger, optionalPublic like count for the containing X post.
engagement.quoteCountinteger, optionalPublic quote count for the containing X post.
engagement.bookmarkCountinteger, optionalPublic bookmark count for the containing X post.
engagement.viewCountinteger, optionalPublic view count for the containing X post.
extractedAtdate-time stringTime when the Actor extracted the Article.

Example dataset row

The row below is shortened. Its Markdown and plain-text bodies are shown as "..." so the example stays readable. The other values are from a successful current-beta run.

{
"sourceUrl": "https://x.com/trq212/status/2052809885763747935",
"postId": "2052809885763747935",
"articleId": "2052796100608974848",
"title": "Using Claude Code: The Unreasonable Effectiveness of HTML",
"markdown": "...",
"plainText": "...",
"preview": "This is now also on the Claude Blog.\n\nMarkdown has become the dominant file format used by agents to communicate with us. It’s simple, portable, has some rich text capability and is easy for you to",
"author": {
"name": "Thariq is on vacation",
"username": "trq212",
"profileUrl": "https://x.com/trq212",
"profileImageUrl": "https://pbs.twimg.com/profile_images/1976939058741039104/r3GgzqRh_200x200.jpg",
"isVerified": true,
"followersCount": 340718
},
"publishedAt": "2026-05-08T17:56:30.000Z",
"lastModifiedAt": "2026-05-19T21:04:23.000Z",
"coverImage": {
"url": "https://pbs.twimg.com/media/HHz_ftzaIAAwkQs.jpg",
"width": 2400,
"height": 960
},
"inlineImages": [
{
"url": "https://pbs.twimg.com/media/HH0Bp86bUAAJDyZ.jpg",
"width": 1640,
"height": 880
},
{
"url": "https://pbs.twimg.com/media/HH0Ao0tbYAAOF9e.jpg",
"width": 1520,
"height": 800
},
{
"url": "https://pbs.twimg.com/media/HH0BFWLbMAEk_7T.jpg",
"width": 1440,
"height": 900
},
{
"url": "https://pbs.twimg.com/media/HH0BRSQbMAAuuof.png",
"width": 1440,
"height": 900
},
{
"url": "https://pbs.twimg.com/media/HH0BXqjboAAHGsw.jpg",
"width": 1440,
"height": 900
},
{
"url": "https://pbs.twimg.com/media/HH0AgqJbcAAaEcZ.jpg",
"width": 1640,
"height": 840
},
{
"url": "https://pbs.twimg.com/media/HHz_q48aAAAaCfW.jpg",
"width": 1440,
"height": 840
},
{
"url": "https://pbs.twimg.com/media/HH0CDc6a8AAy1bv.png",
"width": 684,
"height": 340
},
{
"url": "https://pbs.twimg.com/media/HH0FbKebUAAsRPr.jpg",
"width": 1600,
"height": 880
}
],
"links": [
{
"text": "Claude Blog",
"url": "https://claude.com/blog/using-claude-code-the-unreasonable-effectiveness-of-html"
},
{
"text": "https://thariqs.github.io/html-effectiveness",
"url": "https://thariqs.github.io/html-effectiveness/"
},
{
"text": "https://x.com/trq212/status/2017024445244924382",
"url": "https://x.com/trq212/status/2017024445244924382"
},
{
"text": "https://thariqs.github.io/html-effectiveness/",
"url": "https://thariqs.github.io/html-effectiveness/"
}
],
"engagement": {
"replyCount": 1098,
"repostCount": 2291,
"likeCount": 17806,
"quoteCount": 1937,
"bookmarkCount": 34489,
"viewCount": 14611690
},
"extractedAt": "2026-09-03T20:37:04.364Z"
}

💳 Pricing

This Actor uses pay-per-event pricing. The primary event is Markdown conversion: you are charged once when a selected public Article converts to Markdown successfully. The current rate depends on your Apify tier and appears on the Store page.

🔌 Integrations

Read the dataset in Apify Console or through its API, then use the returned rows in your own workflow. Article and media links stay as source references.

Watch the setup video:

❓ FAQ

Can I mix post IDs and status URLs?

Yes. Add numeric public X post IDs, public x.com status URLs, public twitter.com status URLs, or a mix of these values in articleSources.

What if a source is an ordinary post or a private Article?

The Actor only reads public long-form Articles that are available to logged-out visitors. It does not convert ordinary posts or access private, deleted, protected, login-gated, geographic-restricted, subscriber-only, or paywalled content.

Does the Actor download Article images?

No. It returns source image URLs and dimensions when available. It does not download or permanently host the media files.

Are author, date, and engagement fields always present?

No. These are optional fields in the dataset and appear when X exposes the data.

Can it find top X Articles?

No. You submit the sources you want to read. The Actor does not search X or discover Articles by keyword, profile, or timeline.

Can I use X Articles on mobile?

Yes, if you can copy a public post ID or status URL from your mobile browser or the X app. This Actor reads the source you provide; it does not write or publish an Article.

Does it show how to write an article on X mobile or in the X app?

No. It extracts existing public Articles. It is not a writing or publishing tool.

Where can I see X Articles examples?

The five task examples above show common ways to send a selected source and get an Article row.

📝 Changelog

v0.0 (03-09-2026)

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré