# Google Fact Check Scraper (`seemuapps/google-fact-check-scraper`) Actor

Search Google's Fact Check Tools database for claims and their reviews  publisher, rating, source URL and export them to a clean dataset.

- **URL**: https://apify.com/seemuapps/google-fact-check-scraper.md
- **Developed by:** [Andrew](https://apify.com/seemuapps) (community)
- **Categories:** SEO tools, Developer tools, Agents
- **Stats:** 3 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 claim reviews

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Google Fact Check Scraper

Search Google's Fact Check Tools database - the same index that powers Google's fact-check labels - and export every reviewed claim, the publisher, the rating, and the review URL to a clean dataset.

### What you get

- **One dataset row per claim review** with claim text, claimant, claim date, publisher name, publisher site, review title, review URL, review date, textual rating, and language
- **Multi-query** - pass a list of topics, people, or claim phrasings and get one consolidated dataset
- **Filter by publisher** - restrict to a single fact-checker site (Snopes, PolitiFact, FactCheck.org, AFP, Reuters Fact Check, etc.)
- **Filter by recency** - limit to claims reviewed within the last N days
- **Multilingual** - restrict by language code or pull every language
- **Auto-pagination** - the actor walks the API's `nextPageToken` chain until your result cap is hit

### Use cases

- **Misinformation research** - pull every fact-checked claim about a topic, candidate, or event
- **Journalism prep** - surface what fact-checkers have already covered before publishing
- **AI trust & safety** - build a labelled dataset of claims with verdicts for model evaluation or RAG grounding
- **Brand and reputation monitoring** - track fact-checks mentioning a company or product
- **Election integrity** - assemble a feed of newly reviewed political claims by date

### How to use

1. Add your topics, names, or claim phrasings to **Queries** - one per line.
2. (Optional) Restrict by **Language code** (e.g. `en`, `es`, `pt`).
3. (Optional) Filter to a single fact-checker via **Publisher site filter** (e.g. `snopes.com`, `politifact.com`).
4. (Optional) Limit by **Max age (days)** to focus on recent reviews.
5. Set **Max results per query** (default 50, max 500). The actor paginates 10 at a time.
6. Run - each reviewed claim becomes its own dataset row.

### Output schema

| Field | Type | Description |
|---|---|---|
| `query` | string | The input query |
| `rank` | number | 1-based rank within the query (0 if no results/error) |
| `status` | string | `success`, `no-results`, or `error` |
| `claimText` | string | null | The claim being fact-checked |
| `claimant` | string | null | Who said it (politician, public figure, social-media account) |
| `claimDate` | string | null | When the claim was made (ISO timestamp) |
| `reviewPublisherName` | string | null | Fact-checker name |
| `reviewPublisherSite` | string | null | Fact-checker domain |
| `reviewUrl` | string | null | URL of the published fact-check |
| `reviewTitle` | string | null | Title of the fact-check article |
| `reviewDate` | string | null | When the fact-check was published (ISO timestamp) |
| `textualRating` | string | null | The verdict in the publisher's own words ("False", "Pants on Fire", "Mostly True", …) |
| `languageCode` | string | null | Language of the review |
| `error` | string | null | Error message if `status` is `error` |

If a claim has multiple reviews (e.g. reviewed by both Snopes and PolitiFact), each review is its own row - same claim text, different publisher/rating/URL.

### Tips

- **Phrase queries broadly** - search "vaccine" rather than a specific debunked claim; the API matches across claim text and review text.
- **Ratings are not normalised** - `textualRating` is whatever the publisher wrote. Map them to your own scale downstream.
- **Coverage skews English** and US-centric, but the API supports many languages - try Spanish or Portuguese for Latin-American coverage.
- Use **Publisher site filter** to build a single-publisher feed for a daily digest.
- Some claims have a `claimDate` years before the `reviewDate` - useful to spot resurfaced misinformation.

# Actor input Schema

## `queries` (type: `array`):

Topics, names, or claims to search for fact checks.

## `languageCode` (type: `string`):

BCP-47 language code to restrict results, e.g. en, es, fr. Leave empty for all languages.

## `reviewPublisherSiteFilter` (type: `string`):

Restrict to a single publisher domain (e.g. snopes.com, politifact.com, factcheck.org). Leave empty for all publishers.

## `maxAgeDays` (type: `integer`):

Restrict to claims reviewed within the last N days. Leave empty for no time restriction.

## `maxResultsPerQuery` (type: `integer`):

Maximum claim reviews returned per query. The actor auto-paginates in batches of 10.

## Actor input object example

```json
{
  "queries": [
    "climate change",
    "vaccine"
  ],
  "languageCode": "en",
  "maxResultsPerQuery": 50
}
```

# Actor output Schema

## `results` (type: `string`):

One record per claim review: query, rank, status, claimText, claimant, claimDate, reviewPublisherName, reviewPublisherSite, reviewUrl, reviewTitle, reviewDate, textualRating, languageCode.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "climate change",
        "vaccine"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("seemuapps/google-fact-check-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "queries": [
        "climate change",
        "vaccine",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("seemuapps/google-fact-check-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "climate change",
    "vaccine"
  ]
}' |
apify call seemuapps/google-fact-check-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=seemuapps/google-fact-check-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Pw9ygRu0hdYniZfHV/builds/t7o0vMAio8iNVgV0k/openapi.json
