Ground News Bias & Coverage Scraper avatar

Ground News Bias & Coverage Scraper

Pricing

from $0.03 / 1,000 story clusters

Go to Apify Store
Ground News Bias & Coverage Scraper

Ground News Bias & Coverage Scraper

📰 Extract Ground News top stories with left, center, and right coverage splits, factuality, ownership, blindspot context, and original source articles.

Pricing

from $0.03 / 1,000 story clusters

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

Turn the public Ground News homepage into structured story clusters with political coverage splits, factuality, ownership, blindspot context, and original source articles.

This Apify Actor is built for scheduled media monitoring. It collects the current top-story feed without a Ground News account, browser, or API key and saves clean JSON, CSV, Excel, XML, or RSS-ready records in an Apify dataset.

What does Ground News Bias & Coverage Scraper do?

The Actor fetches the anonymous public homepage at ground.news and emits one record per visible top-story cluster.

Each record can include:

  • 📰 Story ID, title, slug, summary, and timestamp
  • ⚖️ Left, center, and right source counts and percentages
  • 🔎 Ground News coverage-profile or blindspot statement
  • ✅ Factuality distribution across contributing outlets
  • 🏢 Ownership distribution across contributing outlets
  • 🧭 Topics, people, organizations, and places
  • 🔗 Available source article URLs, dates, outlets, and bias labels
  • 🖼️ Story image and attribution

Who is it for?

PR and communications teams

Track whether a developing story is receiving balanced, one-sided, or rapidly changing coverage. Schedule snapshots and compare them in your BI tool.

Media researchers

Study outlet diversity, political coverage, factuality, and ownership without manually opening every Ground News cluster.

OSINT and risk analysts

Collect source links and narrative context for current high-impact stories. Preserve a timestamped evidence trail in a dataset.

Newsroom and editorial teams

Find stories with unusual coverage profiles and inspect the available original reporting from multiple outlets.

Why use this Ground News scraper?

A conventional news scraper returns articles one by one. Ground News groups reporting about the same event and enriches that cluster with media-context signals.

This Actor preserves those relationships. Instead of rebuilding clusters from duplicate headlines, you receive a story-level row with nested sources and aggregate political coverage.

Benefits include:

  • No account or API key required for the supported public feed
  • HTTP-only execution for fast, economical runs
  • Stable story IDs for snapshot deduplication
  • Optional nested sources to reduce dataset size when only metrics matter
  • Explicit errors if the upstream Next.js payload changes
  • Native Apify scheduling, webhooks, API, integrations, and exports

What Ground News data can I extract?

FieldDescription
storyIdGround News story-cluster identifier
titleCurrent cluster headline
slugGround News article slug when available
storyUrlLink to the Ground News cluster
summaryPublic cluster description or summary
publishedAtCluster timestamp
totalSourceCountNumber of sources reported for the cluster
biasRatedSourceCountNumber of sources included in political-bias coverage
leftSourceCountLeft or lean-left source count
centerSourceCountCenter source count
rightSourceCountRight or lean-right source count
leftPercentLeft coverage percentage
centerPercentCenter coverage percentage
rightPercentRight coverage percentage
coverageProfileHuman-readable Ground News coverage statement
factualityDistributionCounts grouped by factuality level
ownershipDistributionCounts grouped by ownership category
interestsRelated topics, people, and organizations
placesRelated countries, regions, or localities
sourcesAvailable source article and outlet details
scrapedAtUTC collection timestamp

How to scrape Ground News in 3 steps

  1. Open the Actor input page.
  2. Choose the maximum number of homepage story clusters and whether to include source articles.
  3. Click Start and export the resulting dataset.

For a cheap first run, keep the prefilled values: 10 clusters with source details.

Input

{
"maxItems": 20,
"includeSources": true
}

maxItems

Maximum number of current homepage clusters to save. Allowed range: 1–100. Ground News exposes a finite changing feed, so a run can return fewer rows than requested.

includeSources

When true, each story includes available source article URLs, dates, outlet details, and outlet bias labels. Set it to false for smaller monitoring snapshots focused on aggregate metrics.

The Actor deliberately does not accept arbitrary URLs or search queries in v1. This keeps the contract aligned with the anonymously verified homepage data.

Output example

{
"storyId": "65593e13-5f48-44b7-abf7-45e482684137",
"title": "Hungary Passes Amendment to End President's Mandate",
"storyUrl": "https://ground.news/article/hungary-passes-amendment-to-end-presidents-mandate_1cb43d",
"summary": "Hungary's Parliament passed the amendment...",
"totalSourceCount": 193,
"biasRatedSourceCount": 115,
"leftSourceCount": 46,
"centerSourceCount": 32,
"rightSourceCount": 37,
"leftPercent": 40,
"centerPercent": 28,
"rightPercent": 32,
"coverageProfile": "This news story only has 28% Center political bias coverage",
"factualityDistribution": {
"low": 1,
"mixed": 14,
"high": 85,
"unknown": 86,
"veryHigh": 7
},
"sources": [
{
"url": "https://www.reuters.com/...",
"outletName": "Reuters",
"outletBias": "center"
}
],
"scrapedAt": "2026-07-15T00:00:00.000Z"
}

Fields that Ground News does not expose for a particular card are omitted instead of being filled with misleading null values.

Political bias coverage fields

Coverage percentages describe the mix of bias-rated sources in the story cluster. They do not claim that the event itself, the headline, or every article has a political bias.

Ground News can use labels such as leanLeft, center, and leanRight on nested outlets. The aggregate left/center/right fields are retained exactly as supplied in the public cluster data.

Use these values as research signals and review the linked sources before drawing conclusions.

Factuality and ownership distributions

factualityDistribution can include categories such as veryLow, low, mixed, high, veryHigh, and unknown.

ownershipDistribution can include categories such as media conglomerate, billionaire, corporation, government, private equity, independent, telecom, and other.

These are count distributions, not percentages. Category availability varies by story and source coverage.

Source article details

When includeSources is enabled, each nested source can contain:

  • Original article URL
  • Article publication timestamp
  • Outlet ID, name, and slug
  • Outlet political-bias label
  • Outlet icon URL

The number of nested source objects may be lower than totalSourceCount. The total is Ground News's cluster total; the embedded homepage payload can expose only a selection of source records.

How much does it cost to scrape Ground News?

The Actor uses pay-per-event pricing:

  • Start: $0.005 per run
  • Story cluster: $0.000054298 on FREE, $0.000047215 on BRONZE, $0.000036828 on SILVER, $0.000028329 on GOLD, $0.000018886 on PLATINUM, and $0.00001322 on DIAMOND

Higher subscription tiers receive lower per-cluster prices. You can set maxItems before starting a run and monitor charges in the run details.

The Actor uses 256 MB by default and avoids browser startup, which keeps compute overhead low. Final live prices are always shown on the Actor page before you run it.

Scheduling a Ground News monitor

Use an Apify schedule to run hourly or daily.

A typical workflow is:

  1. Run with maxItems: 50 and includeSources: true.
  2. Send the dataset webhook to a warehouse or automation platform.
  3. Upsert by storyId and retain scrapedAt as the snapshot time.
  4. Alert when left/center/right percentages or source totals change materially.

Scheduled runs capture the current feed; they do not backfill historical homepage states.

Integrations

Google Sheets

Send each completed dataset to a sheet for a daily editorial or communications briefing.

Slack and Microsoft Teams

Use a webhook or Make/Zapier workflow to post clusters whose coverage profile matches your risk criteria.

Snowflake, BigQuery, and PostgreSQL

Load snapshots into a warehouse and model changes by storyId and scrapedAt.

AI and RAG workflows

Feed summaries and source URLs into a downstream enrichment pipeline. Keep the Ground News metrics as structured metadata for filtering and citations.

API usage with Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/ground-news-bias-coverage-scraper').call({
maxItems: 20,
includeSources: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

API usage with Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("automation-lab/ground-news-bias-coverage-scraper").call(
run_input={"maxItems": 20, "includeSources": True}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

API usage with cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~ground-news-bias-coverage-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"maxItems":20,"includeSources":true}'

Read the dataset after the run finishes through the defaultDatasetId returned by the API.

Use with Apify MCP

Claude Code setup

Connect the hosted Apify MCP server with the exact HTTP transport command:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/ground-news-bias-coverage-scraper"

Claude Desktop setup

Add this hosted server entry to the Claude Desktop MCP configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/ground-news-bias-coverage-scraper"
}
}
}

Cursor setup

Add the same hosted URL as a remote MCP server in Cursor Settings → Tools & MCP.

VS Code setup

In VS Code, open the MCP server configuration and add https://mcp.apify.com?tools=automation-lab/ground-news-bias-coverage-scraper as an HTTP server.

For clients that run a local stdio server, use:

$npx -y @apify/actors-mcp-server --actors automation-lab/ground-news-bias-coverage-scraper

Example prompts:

  • “Collect the top 20 Ground News clusters and rank them by right coverage percentage.”
  • “Extract source URLs for today's most widely covered story.”
  • “Compare ownership distributions across current political stories.”

Tips for reliable monitoring

  • Use storyId rather than title as your deduplication key.
  • Keep scrapedAt when storing repeated snapshots.
  • Set includeSources to false when you need only aggregate metrics.
  • Do not assume every story has political-bias, factuality, or ownership enrichment.
  • Treat source totals and nested-source counts as different concepts.
  • Retry later if Ground News is temporarily unavailable.

Limitations

The v1 Actor supports only the public Ground News homepage feed.

It does not:

  • Search Ground News
  • Access account-only or paid features
  • Scrape arbitrary topic, local, or story-detail pages
  • Guarantee historical coverage
  • Guarantee that every source counted by Ground News appears as a nested object
  • Independently verify Ground News classifications

The homepage and its Next.js payload can change. The Actor detects missing Flight data and fails clearly rather than silently returning an empty dataset.

Data freshness

Results reflect the homepage at run time. Headlines, summaries, source totals, and distributions can change as Ground News updates a cluster.

For longitudinal analysis, schedule recurring runs and retain each scrapedAt snapshot. For a one-time briefing, use the latest successful dataset.

The Actor accesses anonymously available public homepage data and does not bypass login or paid access.

Scraping legality depends on jurisdiction, purpose, contract terms, and the data you store. You are responsible for reviewing Ground News's terms, respecting intellectual-property rights, and using source content lawfully.

Do not treat political-bias or factuality labels as definitive claims about individuals. Preserve attribution and linked sources when publishing analysis.

Troubleshooting

Why did I receive fewer rows than maxItems?

The homepage is finite and changes throughout the day. maxItems is a ceiling, not a promise. Ground News may expose fewer unique clusters at run time.

Why is sources.length lower than totalSourceCount?

totalSourceCount is the reported cluster total. The homepage payload can embed only an available subset of source article records.

Why are bias percentages missing?

Not every cluster has enough bias-rated sources or a public coverage profile. Missing metrics are omitted rather than estimated.

The run says the page format changed

Retry once to rule out a transient response. If it persists, share the run with support so the Flight parser can be updated to Ground News's current schema.

FAQ

Does this Actor need a Ground News account?

No. The supported homepage feed is public and anonymously accessible.

Does it use a browser or residential proxy?

No by default. It uses a direct HTTP request with conservative retries, reducing run time and compute use.

Can I scrape a specific story URL?

Not in v1. The input intentionally matches the verified homepage scope.

Are the bias ratings generated by this Actor?

No. The Actor structures the fields Ground News exposes publicly. It does not invent, score, or validate political-bias classifications.

Can I export to CSV or Excel?

Yes. Open the run dataset and choose JSON, CSV, Excel, XML, or another supported Apify export format.

Can I run it every hour?

Yes. Create an Apify schedule and connect a webhook or integration to process each completed dataset.

Combine this Actor with other Automation Lab tools:

Use Ground News Bias & Coverage Scraper when you need cluster-level political coverage, factuality, ownership, and blindspot context. Use the related actors for broader discovery or downstream article extraction.

Support

If a run fails repeatedly or a field disappears after a Ground News update, share the Apify run with support. Include the input and the approximate time the public page was checked.

For reproducible results, avoid editing exported records before reporting an issue and mention whether includeSources was enabled.