Article Extractor API — Title, Author, Date & Full Text avatar

Article Extractor API — Title, Author, Date & Full Text

Pricing

$0.50 / 1,000 articles

Go to Apify Store
Article Extractor API — Title, Author, Date & Full Text

Article Extractor API — Title, Author, Date & Full Text

Extracts the article from any news or blog URL: title, author, published date, full text, Markdown, lead image and language. Works on paywall-free pages. Unofficial Article Extractor API.

Pricing

$0.50 / 1,000 articles

Rating

0.0

(0)

Developer

yestrue

yestrue

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Categories

Share

Give it news or blog links, get back one clean record per article: title, author, publish date, lead image, language, site name, the full text and the same text as Markdown. It works on any public, paywall-free page in any language — the main content is found with the Readability algorithm that powers reader mode in Firefox, so navigation, footers, cookie banners and "related articles" boxes are left out.

Try it in 1 minute: press Start with the prefilled input (a Wikipedia article and the Apify blog). In a few seconds you get two records with title, author, publishedAt, text, markdown, wordCount and readingTimeMinutes. Price: $0.50 per 1,000 articles; pages that give no article are free.

Use it to:

  • 📰 Feed news into an LLM — clean Markdown with headings, lists, links and tables instead of raw HTML saves tokens and improves answers.
  • 🔎 Monitor coverage — pair it with a news search or RSS Actor and store the full text of every article that mentions your brand.
  • 🧠 Build a RAG corpus — one record per URL with stable field names, ready for your vector database.
  • 📊 Analyse content — word counts, reading time, publish dates and authors for thousands of URLs in one run.
  • 🤖 Give an agent a "read this page" tool — call it from the Apify MCP server or the API with a list of links.

How it works

  1. Each URL is fetched over plain HTTP with browser-like headers, redirects followed, a 30-second timeout and up to three attempts (a network error is retried through the Apify proxy).
  2. robots.txt is read once per site; pages it disallows are skipped with a free ROBOTS_DISALLOWED record (you can turn this off for sites you have permission to read).
  3. The page's metadata is collected from Open Graph, Twitter cards, JSON-LD and standard meta tags; the main article is isolated with Mozilla Readability and converted to Markdown (tables, lists, links and images kept, addresses made absolute).
  4. E-mail addresses and phone numbers in the article text are removed. Everything is delivered as one record with a status.

No browser is started, so a run is fast and cheap. Pages that only render in JavaScript come back thin (readable: false, few words) — use Minimum words to turn them into free NO_CONTENT records.

Input

FieldMeaningDefault
urlsArticle or page links, one per line(required)
outputFormatboth, markdown or textboth
respectRobotsTxtSkip pages the site's robots.txt disallowstrue
minWordsBelow this word count a page is a free NO_CONTENT record0
includeHtmlAlso deliver the cleaned article HTMLfalse
includeLinksAlso deliver every link on the page (up to 500)false
maxTextLengthCut text and Markdown after N characters0 (no limit)
maxConcurrencyPages read in parallel5
proxyConfigurationProxy for retries after a network errorApify proxy

Output

FieldWhat it is
url, canonicalUrlthe final address after redirects, and the canonical one the page declares
title, description, siteName, languagefrom Open Graph / meta tags; language as the page declares it (en, de, …)
author, publishedAtbyline and ISO 8601 publish time from the page's metadata
imagelead image (absolute address)
text, markdownthe article as plain text and as Markdown (title as first heading)
wordCount, readingTimeMinutes, headingssize of the article and its heading outline
readabletrue when a main article was found; false when the whole body minus chrome was used
linksCount, linksnumber of unique links on the page, and the links themselves with includeLinks
contentHtmlcleaned article HTML, with includeHtml
input, status, error, httpStatus, scrapedAtwhat you gave, OK or a reason code, and when

Statuses: OK (charged) — NOT_FOUND, NOT_HTML, NO_CONTENT, ROBOTS_DISALLOWED, TOO_LARGE, INVALID_INPUT, FAILED (free, with error saying why).

Example

{
"input": "https://journal.example.com/articles/web-scraping",
"url": "https://journal.example.com/articles/web-scraping",
"title": "Web Scraping Explained",
"author": "Jane Example",
"publishedAt": "2026-03-04T09:15:00.000Z",
"siteName": "Example Journal",
"description": "What web scraping is and how it works.",
"language": "en",
"canonicalUrl": "https://journal.example.com/articles/web-scraping",
"image": "https://journal.example.com/img/lead.jpg",
"text": "Web scraping is the practice of collecting data from websites with a program instead of a browser. …",
"markdown": "# Web Scraping Explained\n\nWeb scraping is the practice of collecting data from websites …\n\n## Common steps\n\n- Fetch the page\n- Parse the HTML\n- Extract and store the fields\n\n| Tool | Language |\n| --- | --- |\n| Cheerio | JavaScript |",
"wordCount": 168,
"readingTimeMinutes": 1,
"readable": true,
"headings": [{ "level": 2, "text": "Common steps" }, { "level": 2, "text": "Tools compared" }],
"linksCount": 6,
"httpStatus": 200,
"status": "OK",
"scrapedAt": "2026-10-19T12:00:00.000Z"
}

Pricing

You pay per article delivered ($0.50 per 1,000). Dead links, non-HTML files, pages without an article and pages blocked by robots.txt are free. Set a Maximum charge on the run to cap the cost; the run stops cleanly when it is reached and tells you how many links were left.

FAQ

Is this an official API? No, it's an unofficial API built on public pages.

Does it work behind paywalls or logins? No. It reads what a logged-out visitor can read, and it does not bypass paywalls, captchas or bot walls.

Why is author or publishedAt empty? The page does not state them in its metadata (Open Graph, JSON-LD, <time> or meta tags). Fields are never guessed.

Why did a page come back with a few words and readable: false? The page builds its content in JavaScript, so a plain HTTP fetch sees only the shell. A headless-browser version is on the roadmap; for now use Minimum words to make such pages free NO_CONTENT records.

Can I pass thousands of URLs? Yes — raise Parallel pages to 10–20 for big batches. Each URL is one record; the run's status message tells you how many were delivered.

Like it? A short review on the Store page helps other people find this Actor. Something missing or broken? Tell us on the Issues tab — we read every one.