{
  "openapi": "3.0.1",
  "info": {
    "title": "Google News Scraper: Articles, Publisher URLs & Full Text",
    "description": "Scrape Google News search results, topics and top stories in any edition. Real publisher URLs included at no extra charge, date slicing past the 100-result cap, optional full article text, and an only-new-articles mode for news monitoring.",
    "version": "0.1",
    "x-build-id": "gQGGVm1AtVFELz6Q4"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rjmacarthy~google-news-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rjmacarthy-google-news-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/rjmacarthy~google-news-scraper/runs": {
      "post": {
        "operationId": "runs-sync-rjmacarthy-google-news-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/rjmacarthy~google-news-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-rjmacarthy-google-news-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "queries": {
            "title": "Search queries",
            "type": "array",
            "description": "One Google News search per line. Google News operators work: \"exact phrase\", site:reuters.com, intitle:apple, -exclude, OR, when:7d (last 7 days), when:12h, after:2026-10-01 before:2026-10-15. Each query returns up to 100 articles per Google request; use a date range with date slicing to get more.",
            "items": {
              "type": "string"
            }
          },
          "topics": {
            "title": "Topic feeds",
            "type": "array",
            "description": "Google News sections to scrape in the chosen edition: Top stories (the front page), World, Nation (your edition country), Business, Technology, Entertainment, Sports, Science, Health. Each topic feed returns its current ~40-70 articles, including the related coverage Google groups with each story.",
            "items": {
              "type": "string",
              "enum": [
                "TOP_STORIES",
                "WORLD",
                "NATION",
                "BUSINESS",
                "TECHNOLOGY",
                "ENTERTAINMENT",
                "SPORTS",
                "SCIENCE",
                "HEALTH"
              ],
              "enumTitles": [
                "Top stories",
                "World",
                "Nation (edition country)",
                "Business",
                "Technology",
                "Entertainment",
                "Sports",
                "Science",
                "Health"
              ]
            }
          },
          "edition": {
            "title": "Edition (country and language)",
            "enum": [
              "US:en",
              "US:es-419",
              "GB:en",
              "CA:en",
              "CA:fr",
              "AU:en",
              "NZ:en",
              "IE:en",
              "IN:en",
              "IN:hi",
              "IN:bn",
              "IN:ta",
              "IN:te",
              "IN:ml",
              "IN:mr",
              "SG:en",
              "MY:en",
              "PH:en",
              "PK:en",
              "BD:bn",
              "ZA:en",
              "NG:en",
              "KE:en",
              "GH:en",
              "IL:en",
              "IL:he",
              "DE:de",
              "AT:de",
              "CH:de",
              "CH:fr",
              "FR:fr",
              "BE:fr",
              "BE:nl",
              "NL:nl",
              "ES:es",
              "MX:es-419",
              "AR:es-419",
              "CO:es-419",
              "CL:es-419",
              "PE:es-419",
              "VE:es-419",
              "BR:pt-419",
              "PT:pt-150",
              "IT:it",
              "SE:sv",
              "NO:no",
              "PL:pl",
              "CZ:cs",
              "SK:sk",
              "HU:hu",
              "RO:ro",
              "BG:bg",
              "GR:el",
              "SI:sl",
              "RS:sr",
              "LV:lv",
              "LT:lt",
              "UA:uk",
              "UA:ru",
              "RU:ru",
              "TR:tr",
              "AE:ar",
              "SA:ar",
              "EG:ar",
              "LB:ar",
              "MA:fr",
              "SN:fr",
              "JP:ja",
              "KR:ko",
              "CN:zh-Hans",
              "TW:zh-Hant",
              "HK:zh-Hant",
              "TH:th",
              "VN:vi",
              "ID:id"
            ],
            "type": "string",
            "description": "Which Google News edition to read: it sets the country and language of the results (Google's hl, gl and ceid parameters).",
            "default": "US:en"
          },
          "maxArticlesPerQuery": {
            "title": "Max articles per query / feed",
            "minimum": 0,
            "type": "integer",
            "description": "Stop each search query or topic feed after this many articles. 0 = no limit. Without date slicing Google returns at most ~100 per query; with a date range and date slicing you can get thousands.",
            "default": 100
          },
          "decodeUrls": {
            "title": "Resolve real publisher URLs",
            "type": "boolean",
            "description": "Google News RSS links point to news.google.com redirect pages. When on, each article is resolved to the real publisher URL (e.g. https://www.reuters.com/...), included in the article price. Turn off for a faster run that only needs titles, publishers and dates. If Google refuses to resolve a link, the article keeps its Google News link and publisherUrlResolved is false; the run never fails because of it. Always on when full text is requested (text is fetched from the publisher URL).",
            "default": true
          },
          "extractArticleText": {
            "title": "Extract full article text",
            "type": "boolean",
            "description": "Open each publisher page and extract the main article text, author, published time, main image (og:image) and description. Charged as an extra \"article-text\" event only when the text was actually extracted: paywalled, blocked or JavaScript-only pages get text: null with a textError reason and are not charged for text. Slower: publisher pages are fetched politely (at most 1 request per second per site).",
            "default": false
          },
          "dateFrom": {
            "title": "Published from",
            "type": "string",
            "description": "Only articles published on or after this day (US Pacific time, like Google News), e.g. 2026-10-01, or a relative value like \"30 days\". Applies to search queries; topic feeds always show current articles. Overrides when:/after:/before: in the queries."
          },
          "dateTo": {
            "title": "Published to",
            "type": "string",
            "description": "Only articles published on or before this day, e.g. 2026-10-31. Leave empty for today."
          },
          "splitByDay": {
            "title": "Date slicing: one search per day",
            "type": "boolean",
            "description": "When a date range is set (here or with when:7d / after: / before: in a query), split it into one search per day, newest day first, and merge the results. Each day can return up to ~100 articles. Costs one Google request per day searched; it stops as soon as \"Max articles per query\" is reached.",
            "default": true
          },
          "onlyNewArticles": {
            "title": "Only new articles (incremental mode)",
            "type": "boolean",
            "description": "Output (and charge) only articles that previous runs with the same state key did not output, tracked per query/topic and edition. The first run outputs everything and becomes the baseline. Schedule the Actor (e.g. every hour) for news alerts.",
            "default": false
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "Name of this monitor. Runs with the same state key share their memory of seen articles; use a different key for each independent monitor.",
            "default": "default"
          },
          "deduplicateAcrossQueries": {
            "title": "Remove duplicates across queries and topics",
            "type": "boolean",
            "description": "Output each article only once per run, even if several queries or topics return it (it is reported under the first one). Turn off to get the article once per matching query.",
            "default": true
          },
          "cacheDecodedUrls": {
            "title": "Remember resolved publisher URLs",
            "type": "boolean",
            "description": "Keep resolved publisher URLs in a named key-value store (google-news-url-cache) so later runs that see the same articles resolve them instantly, with fewer requests to Google.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max parallel requests to Google",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many requests to news.google.com run in parallel. Keep it low (2) to avoid rate limiting; the Actor also slows down automatically when Google answers HTTP 429.",
            "default": 2
          },
          "textConcurrency": {
            "title": "Max parallel publisher pages",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many publisher pages are fetched in parallel for full text (never more than one at a time, and one per second, for the same site).",
            "default": 4
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Not needed normally. If Google starts answering HTTP 429 / 403 for your runs, enable Apify Proxy (a US proxy is best; EU IPs may get Google's cookie-consent page).",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}