{
  "openapi": "3.0.1",
  "info": {
    "title": "Google News Scraper & API - News Monitoring & Real Article URLs",
    "description": "Google News scraper and API for news monitoring: search Google News by keyword, topic or city in any language and country. One result = one article: headline, source, publish date, link, real publisher URL (free), related coverage. Hour-to-year and date-range filters. $1.00 per 1,000, no start fee.",
    "version": "1.0",
    "x-build-id": "a4VbJCmFOV0JTO1EF"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rel8ble~google-news-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rel8ble-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/rel8ble~google-news-scraper/runs": {
      "post": {
        "operationId": "runs-sync-rel8ble-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/rel8ble~google-news-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-rel8ble-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": "What to search Google News for, one query per line, written as you would type it into news.google.com: \"tesla\", \"\\\"climate change\\\" -opinion\", \"nvidia OR amd earnings\". Google operators work (quotes, OR, minus, intitle:). Each query returns up to maxItemsPerQuery articles, one dataset row per article (headline, source, publish date, link) at $0.001 per row. Provide queries, topics, locations, or any mix. Use this for news monitoring, brand or ticker tracking and research. Default [\"artificial intelligence\"] (demo).",
            "items": {
              "type": "string"
            }
          },
          "topics": {
            "title": "Topics (Google News sections)",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional. Ready-made Google News sections to read instead of, or in addition to, queries: TOP (front-page top stories), WORLD, NATION (news of the selected country), BUSINESS, TECHNOLOGY, ENTERTAINMENT, SPORTS, SCIENCE, HEALTH. Each section returns its current 35-70 headline articles for the chosen language and country, and each row lists related coverage of the same story from other outlets. Time and site filters do not apply to sections. Use this for a daily headlines digest. About $0.04-0.07 per section.",
            "items": {
              "type": "string",
              "enum": [
                "TOP",
                "WORLD",
                "NATION",
                "BUSINESS",
                "TECHNOLOGY",
                "ENTERTAINMENT",
                "SPORTS",
                "SCIENCE",
                "HEALTH"
              ],
              "enumTitles": [
                "Top stories",
                "World",
                "Nation (selected country)",
                "Business",
                "Technology",
                "Entertainment",
                "Sports",
                "Science",
                "Health"
              ]
            }
          },
          "locations": {
            "title": "Locations (local news)",
            "type": "array",
            "description": "Optional. City, region or country names, one per line, to read the Google News local feed for that place: \"Chicago\", \"Bavaria\", \"Sydney\". Each place returns its current headline articles (about 70) with related coverage. Time and site filters do not apply. Use this for local news monitoring. About $0.07 per place.",
            "items": {
              "type": "string"
            }
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Optional. Article language as a Google language code (the hl parameter): \"en-US\" (default), \"en-GB\", \"de\", \"fr\", \"es\", \"es-419\", \"pt-BR\", \"it\", \"nl\", \"pl\", \"ja\", \"ko\", \"hi\", \"ar\", \"zh-TW\". Google News returns articles written in this language, so pair it with a matching country.",
            "default": "en-US"
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Optional. Two-letter country code of the Google News edition (the gl parameter): \"US\" (default), \"GB\", \"DE\", \"FR\", \"ES\", \"MX\", \"BR\", \"IT\", \"NL\", \"PL\", \"JP\", \"KR\", \"IN\", \"AU\", \"CA\". Decides which outlets rank first and what NATION and TOP contain. The ceid parameter is built from language + country for you.",
            "default": "US"
          },
          "timeRange": {
            "title": "Time range (for queries)",
            "enum": [
              "anytime",
              "1h",
              "12h",
              "1d",
              "7d",
              "30d",
              "1y"
            ],
            "type": "string",
            "description": "Optional. Only return articles published within this period: \"anytime\" (default, the best matches from any date), \"1h\" (past hour), \"12h\", \"1d\" (past 24 hours), \"7d\" (past week), \"30d\" (past month), \"1y\" (past year). Ignored when dateFrom or dateTo is set. Use \"1h\" or \"1d\" for scheduled monitoring so each run only costs the fresh articles.",
            "default": "anytime"
          },
          "dateFrom": {
            "title": "Date from (for queries)",
            "type": "string",
            "description": "Optional. First publish date to include, as YYYY-MM-DD (e.g. \"2026-09-01\"). Sent to Google as the after: operator. Combine with dateTo for an exact date range; overrides timeRange. Use this for historical research and backfills: Google News search reaches back many years."
          },
          "dateTo": {
            "title": "Date to (for queries)",
            "type": "string",
            "description": "Optional. Last publish date to include, as YYYY-MM-DD (e.g. \"2026-09-30\"), inclusive. Sent to Google as the before: operator. Empty = up to today. Overrides timeRange."
          },
          "sites": {
            "title": "Only these sites / sources (for queries)",
            "type": "array",
            "description": "Optional. Publisher domains, one per line, to limit results to: \"reuters.com\", \"bbc.com\", \"techcrunch.com\". Sent to Google as site: filters (several domains are OR-ed). Works with or without queries: sites alone returns the latest articles from those outlets. Use this to follow specific publications.",
            "items": {
              "type": "string"
            }
          },
          "maxItemsPerQuery": {
            "title": "Max articles per query",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Optional. Articles to save per query, topic or location, integer 1-10000. Default 100. Google News returns at most about 100 articles per request, so 100 or less = one fast request (about 2 seconds, $0.10 or less). Above 100 the scraper also searches the time window one day at a time (up to 100 more per day, newest day first) and drops duplicates, so set a timeRange of 7d / 30d / 1y or a dateFrom-dateTo range; with \"anytime\" it walks back 30 days. Cost = saved articles x $0.001.",
            "default": 100
          },
          "resolveUrls": {
            "title": "Resolve real publisher URLs",
            "type": "boolean",
            "description": "Optional boolean. Google News links look like news.google.com/rss/articles/CBMi... and only redirect inside a browser. true = decode each one to the real article URL on the publisher site (publisherUrl, also copied to url). Costs two extra Google requests per article, so runs take longer (see the README for measured times); the price per result is the same. If a link cannot be decoded the article is still saved with the Google link and urlResolved: false. Turn on when you need to open, crawl or deduplicate the articles themselves. Default false.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Optional, advanced. Parallel requests, integer 1-20. Default 10. Lower it if you see repeated block retries in the log.",
            "default": 10
          },
          "maxRequestRetries": {
            "title": "Max retries per request",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Optional, advanced. Retries per feed request on a new IP when Google blocks or times out, integer 0-20. Default 6. Link decoding uses at most 3.",
            "default": 6
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Apify Proxy (datacenter) is the default. Switch to the RESIDENTIAL group only if the log shows repeated block retries, for example on very large resolveUrls runs.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}