{
  "openapi": "3.0.1",
  "info": {
    "title": "Google News Scraper: Search, Topics, Decoded URLs",
    "description": "Google News search, topic, place, publisher and top headline feeds in any country edition, no API key. Day by day windows go past the 100 article cap. Returns headline, publisher, publication time, snippet and the decoded publisher URL as JSON, CSV or Excel. Pay once per new article.",
    "version": "1.0",
    "x-build-id": "zo1IydkcZHs3HA9wE"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automation_craft~google-news-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automation_craft-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/automation_craft~google-news-scraper/runs": {
      "post": {
        "operationId": "runs-sync-automation_craft-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/automation_craft~google-news-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-automation_craft-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 terms, topics, places or Google News URLs",
            "maxItems": 200,
            "type": "array",
            "description": "What to collect. In Search mode these are keywords and may carry Google News operators: after:2026-09-01, before:2026-09-30, when:7d, site:bbc.com, source:Reuters, \"exact phrase\", -excluded. You can also paste a news.google.com search, topic, section or geo URL of any kind and it is parsed into the right feed. Leave empty to get the country's top headlines.",
            "items": {
              "type": "string"
            }
          },
          "feedType": {
            "title": "Feed type",
            "enum": [
              "search",
              "topic",
              "geo",
              "publication",
              "section",
              "top-headlines"
            ],
            "type": "string",
            "description": "Which Google News surface the entries above refer to. Search runs a keyword search. Topic takes one of Google's topic names or a topic id. Geo takes a city, region or country name. Publisher takes a domain such as bbc.com or a publisher name such as Reuters. Section feeds are addressed by pasting their URL. Top headlines needs no entries at all."
          },
          "country": {
            "title": "Country edition",
            "enum": [
              "US",
              "GB",
              "CA",
              "AU",
              "IN",
              "IE",
              "NZ",
              "ZA",
              "SG",
              "PH",
              "NG",
              "KE",
              "DE",
              "FR",
              "ES",
              "IT",
              "NL",
              "BE",
              "PT",
              "CH",
              "AT",
              "SE",
              "NO",
              "DK",
              "FI",
              "PL",
              "CZ",
              "GR",
              "TR",
              "RU",
              "UA",
              "IL",
              "AE",
              "SA",
              "EG",
              "BR",
              "MX",
              "AR",
              "JP",
              "KR",
              "CN",
              "TW",
              "HK",
              "ID",
              "MY",
              "TH",
              "VN",
              "PK",
              "BD"
            ],
            "type": "string",
            "description": "Google News edition to read, sent as the gl parameter. Changes which outlets and which regional stories appear."
          },
          "language": {
            "title": "Language",
            "enum": [
              "en-US",
              "en-GB",
              "en-IN",
              "en-AU",
              "en-CA",
              "en-NZ",
              "en-ZA",
              "de",
              "fr",
              "es",
              "es-419",
              "it",
              "nl",
              "pt-BR",
              "pt-PT",
              "sv",
              "no",
              "da",
              "fi",
              "pl",
              "cs",
              "el",
              "tr",
              "ru",
              "uk",
              "he",
              "ar",
              "ja",
              "ko",
              "zh-CN",
              "zh-TW",
              "id",
              "ms",
              "th",
              "vi",
              "hi",
              "bn",
              "ta",
              "te",
              "mr",
              "ur"
            ],
            "type": "string",
            "description": "Interface and results language, sent as the hl parameter."
          },
          "lastNDays": {
            "title": "Last N days",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Collect articles published in the last N days, counting today. Ignored when Date from or Date to is set. Topic, place and top headline feeds carry no date operators, so for those the range is applied to each article's publication time instead of to the request."
          },
          "dateFrom": {
            "title": "Date from (YYYY-MM-DD)",
            "type": "string",
            "description": "First publication date to collect, inclusive. Overrides Last N days. Google News accepts dates, not times."
          },
          "dateTo": {
            "title": "Date to (YYYY-MM-DD)",
            "type": "string",
            "description": "Last publication date to collect, inclusive. Overrides Last N days."
          },
          "deepSearch": {
            "title": "Deep search (split the date range by day)",
            "type": "boolean",
            "description": "On: one feed request per day in the range, plus rolling hour windows for today when a day is still full, so a query can return far more than Google's 100 item limit. Off: one request covering the whole range. Only Search and Publisher feeds can carry Google's date operators."
          },
          "maxShardsPerQuery": {
            "title": "Max feed requests per query",
            "minimum": 1,
            "maximum": 400,
            "type": "integer",
            "description": "Safety cap on how many feed requests one query may make, hour windows included. Days beyond the cap are not requested and are counted in the run summary. Raise it for long back catalogues."
          },
          "maxArticlesPerQuery": {
            "title": "Max articles per query",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Cap on charged articles for each entry in the list above. Honoured exactly."
          },
          "maxTotal": {
            "title": "Max articles in total",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Hard cap on charged articles for the whole run, across every query. Free re-emitted articles do not count against it."
          },
          "decodeUrls": {
            "title": "Decode publisher URLs",
            "type": "boolean",
            "description": "Resolve each Google News link to the real publisher URL. Included in the Article price, no extra event. When Google cannot resolve a link the row is still delivered with the Google News link and urlDecoded set to false."
          },
          "includeArticleBody": {
            "title": "Include the article body",
            "type": "boolean",
            "description": "Fetch each publisher page and extract the article text, word count and a paywall flag. Charged as Article body only when a body of at least 100 words was delivered. Requires Decode publisher URLs. Cookie consent pages and subscription teasers are rejected, and so is a page whose own markup names a different story or carries several stories the Actor cannot tell apart. Where a publisher labels nothing, the single substantial story on the page is used. No paywall is ever bypassed."
          },
          "memoryName": {
            "title": "Dedup memory name",
            "type": "string",
            "description": "Give this schedule a name and the Actor remembers every article it has already delivered under that name. Later runs skip those articles for free, so a daily monitor pays once per article. Leave empty to dedup inside the run only."
          },
          "reEmitKnown": {
            "title": "Re-emit known articles (free)",
            "type": "boolean",
            "description": "Deliver articles the memory already knows as extra rows flagged isNew false, at no charge. They do not count against Max articles in total. Those free rows carry feed metadata only: no publisher URL decoding and no article body."
          },
          "resetMemory": {
            "title": "Reset this memory before the run",
            "type": "boolean",
            "description": "Forget everything stored under the memory name and start again. Every article found in this run is then new and charged."
          },
          "includeSources": {
            "title": "Only these publishers",
            "maxItems": 200,
            "type": "array",
            "description": "Keep only articles from these publishers. Domains (bbc.com) and names (Reuters) both work. For search terms you type, the list is pushed into the query so Google filters server side; for a pasted Google News URL, a topic, a place or top headlines, it is applied to what comes back. Either way a filtered out article is never charged.",
            "items": {
              "type": "string"
            }
          },
          "excludeSources": {
            "title": "Never these publishers",
            "maxItems": 200,
            "type": "array",
            "description": "Drop articles from these publishers. Domains or names.",
            "items": {
              "type": "string"
            }
          },
          "excludeWords": {
            "title": "Exclude headlines containing",
            "maxItems": 200,
            "type": "array",
            "description": "Drop an article when its headline or snippet contains any of these words, case insensitive.",
            "items": {
              "type": "string"
            }
          },
          "concurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "How many Google News requests run at once. Eight is measured as fast and clean; lower it if you run many scrapers from one account."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. Google News answers Apify run containers directly, so this Actor runs with no proxy by default. Switch one on only if you need a specific egress country."
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}