CNN Articles Scraper avatar

CNN Articles Scraper

Pricing

from $2.10 / 1,000 results

Go to Apify Store
CNN Articles Scraper

CNN Articles Scraper

Fetches news articles from 12 CNN editions worldwide -- US, International, Espanol, Arabic, Brasil, Indonesia, Chile, Greece, Czechia, Portugal, Japan and Turkiye -- with headline, full body text, author, section, publish date and lead image, plus archive access back to 2011.

Pricing

from $2.10 / 1,000 results

Rating

0.0

(0)

Developer

Ibnu Adzim

Ibnu Adzim

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

CNN Articles Scraper (12 Editions)

Scrapes news articles from twelve CNN editions worldwide in a single run — returning the full article body, not just a headline and a link.

EditionsUS, International, en Español, Arabic, Brasil, Indonesia, Chile, Greece, Czechia, Portugal, Japan, Türkiye
Returnsheadline, full body text, description, author(s), section, publish + modified dates, keywords, lead image, word count, language
Archive depthback to 2015 (US/International/Español), 2011 (Chile)
MethodHTTP only — public sitemaps and RSS feeds plus each article's own page. No browser, no login, no API key

What you get

Every row carries the portfolio envelope — _input, _source, _scrapedAt, recordType — plus the article fields. Three record types share the dataset:

  • ARTICLE — one per article.
  • SEARCH_SUMMARY — one per edition (or edition + section), carrying the feed's own total, how many rows were returned, which feeds were read, which filters were actually applied, and how many video/gallery URLs were skipped.
  • ERROR — one per input that failed. Every input maps to at least one row, so a missing edition is never silently absent.

_source tells you which strategy produced each row: S1-jsonld (the article's own JSON-LD), S3-html (a CSS body container, used where the edition's JSON-LD carries no body), or S2-sitemap (metadata only — the detail fetch failed, and articleBodyFetchError says why).

Example input

{
"editions": ["us", "brasil", "indonesia"],
"maxItemsPerEdition": 25,
"includeFullBody": true,
"keywords": ["election"]
}

Reaching into the archive:

{
"editions": ["us"],
"includeArchive": true,
"sections": ["health"],
"dateFrom": "2020-03-01",
"dateTo": "2020-03-31",
"maxArchivePartitions": 3
}

Editions and how deep each one goes

EditionRecent feedArchive
us / intl~145 articles2,535 monthly partitions, by section, from 2015
espanol~1083,435 partitions
brasil~500501 partitions
greece~310111 partitions
chile~200179 monthly partitions from 2011
portugal~1732 partitions
czech~11850 partitions
arabic~10023 partitions
indonesia~100 per section, 9 sections27 partitions
turkiye~35 per section, 12 sectionsnone
japan30none

Sections

On CNN Indonesia and CNN Türk each section has its own feed, so a section becomes its own query with its own summary row:

  • Indonesia: nasional, internasional, ekonomi, olahraga, teknologi, otomotif, edukasi, hiburan, gaya-hidup
  • Türk: turkiye, dunya, ekonomi, spor, saglik, teknoloji, kultur-sanat, yasam, otomobil, egitim, magazin

On US / International / en Español sections instead select which archive partitions get fetched, and only when includeArchive is on. Other editions publish one combined feed and ignore the field.

Known limits — read before you rely on it

  • us and intl are the same backend. www.cnn.com redirects to edition.cnn.com; their feeds differ by an item or two and article bodies are identical. Pick one unless you specifically need both hosts recorded.
  • japan is shallow. CNN.co.jp publishes no sitemap at all — a 30-item RSS feed is the only machine-readable index that host offers, and there is no archive. Its articles are also genuinely short (translated wire copy, often under 200 characters).
  • turkiye date filtering is inert. CNN Türk publishes RFC-822 dates that dateFrom/dateTo cannot compare, so its rows are kept rather than silently dropped. Filter its output downstream if you need a hard date bound.
  • Keyword filtering is client-side. No CNN feed accepts a query parameter, so keywords are applied after fetching. For real server-side keyword search across CNN, use the companion CNN Search Scraper.
  • Videos and galleries are excluded. CNN Arabic and CNN Portugal mix video URLs into their news sitemaps; those pages have no article body, so they are skipped and counted in skippedNonArticleUrls. Use the companion CNN Videos Scraper and CNN Galleries Scraper for those.
  • CNN's sitemaps contain aliased duplicates. The same story can appear under two slugs (e.g. /coronavirus-cooking and /coronavirus-cooking-wellness). Both are real entries upstream and both are returned; de-duplication is by exact URL only.
  • Breaking-news stubs return a very short body. CNN Prima News publishes placeholder articles ("Podrobnosti připravujeme") before the story is written. That is real data, not a scrape failure.

Anti-bot

No bot mitigation was observed on the article path of any edition — all twelve answer 200 on a cold, unproxied request. One exception: www.cnn.com/cnn-underscored/* (the commerce subsection) is behind PerimeterX. The built-in retry ladder rotates TLS profile and proxy exit on each attempt and clears it without special handling.

TLS profile chrome124 by default, rotating through firefox133, safari17_0 and chrome99_android on retry. Apify Residential proxy is the default on the platform.

Companion actors

  • CNN Search Scraper — server-side keyword search across CNN.com
  • CNN Videos Scraper — video metadata across the editions that publish it
  • CNN Galleries Scraper — photo galleries and live stories
  • CNN Sections Scraper — the section and tag taxonomy of each edition