Trade Journals Scraper — AI-Ready Markdown avatar

Trade Journals Scraper — AI-Ready Markdown

Pricing

from $2.10 / 1,000 results

Go to Apify Store
Trade Journals Scraper — AI-Ready Markdown

Trade Journals Scraper — AI-Ready Markdown

Scrapes 21 niche industry trade journals (FiercePharma, FreightWaves, the Industry Dive network, Transport Topics and more) into one LLM-ready schema. Every article arrives as clean Markdown with ads, share bars and newsletter CTAs stripped — ready for RAG. Unlisted publications work too.

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

4 days ago

Last modified

Categories

Share

Scrapes 21 niche industry trade journals into one unified schema built for LLM ingestion. Every article comes back as clean Markdown with the ads, share bars, newsletter CTAs, related-article rails and event promos already stripped out — ready to chunk into a RAG pipeline or a fine-tuning set without a second cleaning pass.

No login, no cookies, no browser. HTTP only.

Publications covered

IndustryPublications
Pharma / BiotechFiercePharma, FierceBiotech, BioPharma Dive, pharmaphorum
HealthcareFierceHealthcare, Healthcare Dive, MedCity News
Freight & LogisticsFreightWaves, Transport Topics, FleetOwner, Logistics Management, SupplyChainBrain, Supply Chain Dive
Energy & ConstructionUtility Dive, Construction Dive
Retail & ConsumerRetail Dive, Food Dive, Marketing Dive
Enterprise & FinanceCIO Dive, Banking Dive, HR Dive

Not on the list? Paste any publication or article URL. Unlisted sites run through a generic extractor that finds the article body by prose density rather than by a hard-coded selector — it was verified against six unrelated CMS platforms (WordPress, Drupal 9, Drupal 11, Nuxt, Industry Dive's custom CMS, and Endeavor's).

What you can feed it

  • Publications — pick from the list, or give a site URL
  • Category archive URLs — e.g. https://www.fiercepharma.com/manufacturing crawls just that section
  • Article URLs — exact articles, discovery skipped
  • Industry topics — keep only articles matching Biotech, Supply Chain, M&A, …
  • Date windowpublishedAfter / publishedBefore, ideal for incremental corpus refreshes

All of these can be combined in a single run, and they all land in one dataset.

Output

Three record types share the dataset, told apart by recordType.

ARTICLE — the unified AI-ready row

FieldNotes
articleIdStable 16-char hash of the canonical URL — comparable across publications, unlike per-CMS ids
source"FiercePharma", "FreightWaves", …
industryTopicThe publication's own section/tag, falling back to this actor's industry label
title, author
publishedDateAlways ISO 8601 UTC with a Z — normalised from RFC-2822, naive-local and offset-ISO sources
urlFinal URL after redirects
contentMarkdownThe cleaned article body

Plus description, modifiedDate, keywords, imageUrl, publisher, publicationDomain, isAccessibleForFree, wordCount, bodySelector (which rule found the body) and isRegisteredPublication. Turn on Also include raw body HTML to add contentHtml.

DISCOVERY_SUMMARY — one per publication

How the articles were found (feed / sitemap / S1-wp / S2-drupal / archive-links), how many were discovered vs. attempted vs. succeeded, and how many your filters removed — so a small result set is explainable rather than mysterious.

ERROR — one per input that failed

Every input maps to at least one row. Nothing disappears silently.

_errorMeaning
not_foundHTTP 404/410 — article de-listed
blocked_by_wafChallenged on every TLS profile and exit IP
extraction_failedFetched fine, but the cleaned body came out under minBodyChars — usually a paywall teaser
discovery_failedNo feed, sitemap or recognisable article links
fetch_failedTransient failure that survived the retry ladder
invalid_inputRefused before any request, with the reason

How the body is extracted

Metadata and body come from different layers, because on every publication tested the JSON-LD NewsArticle block carries a headline, author and date but an empty articleBody. So:

  • Metadata — JSON-LD → OpenGraph/meta tags → the RSS entry → URL path
  • Body — one of three, chosen by domain:
    • S1-wp WordPress REST (content.rendered, with author and taxonomy embedded)
    • S2-drupal Drupal JSON:API
    • S3-dom the article page, body located by selector or prose density

The _source field on every row names the pair that produced it, so you can tell a full-fidelity API row from a DOM-salvaged one without re-fetching.

Known limits

  • Filtering by topic is done by this actor, not by the publisher. Only 2 of the 21 publications expose a server-side category endpoint, so filtering client-side is the only behaviour that is identical everywhere. The summary row always reports how many articles the filter removed.
  • Paywalled articles return extraction_failed rather than a teaser row. That is deliberate — a 200-character teaser stored as if it were an article is worse than an honest error.
  • Author is ~88% complete across a full run; some publications genuinely publish articles with no byline.
  • Feed-based discovery reaches roughly the most recent 10–40 articles per publication. For deeper history use publishedAfter/publishedBefore with a category archive URL, or the sitemap-backed publications.
  • Publications whose robots.txt disallows Claude/anthropic agents sitewide are refused with an explanation, not silently skipped.

Proxy

Residential is the default and is strongly recommended: most of these sites sit behind Cloudflare, which fingerprints datacenter ASNs before it looks at the TLS handshake. The actor rotates through four browser TLS fingerprints automatically — one publication in the registry answers 403 to Chrome and 200 to Safari on the same IP in the same second.