{
  "openapi": "3.0.1",
  "info": {
    "title": "Google News Scraper",
    "description": "Scrapes Google News across 47 country/language editions: top stories, keyword search, the 8 topic sections, local news by place, topic and publisher IDs. Resolves Google's opaque redirect links into real publisher article URLs. HTTP only, no API key.",
    "version": "0.1",
    "x-build-id": "P04IJ00DVZnjRq0qC"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapyx~google-news-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapyx-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/scrapyx~google-news-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapyx-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/scrapyx~google-news-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapyx-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": {
          "includeTopStories": {
            "title": "Top stories",
            "type": "boolean",
            "description": "Fetch the Top stories front page for every selected edition. This is the fastest way to see what a country is leading with right now (~38 items per edition).",
            "default": false
          },
          "queries": {
            "title": "Search queries",
            "type": "array",
            "description": "Keyword searches, one per line (~100 items each). Google's operators work: quoted \"exact phrase\", OR, -exclude, site:reuters.com, intitle:, and time windows like when:1h / when:7d or after:2026-09-01 before:2026-09-05. Note allinurl: is NOT supported and returns nothing.",
            "items": {
              "type": "string"
            }
          },
          "topics": {
            "title": "Topics",
            "type": "array",
            "description": "Google's eight built-in news sections (50–70 items each). Case sensitive upstream — the actor validates them before sending.",
            "items": {
              "type": "string",
              "enum": [
                "WORLD",
                "NATION",
                "BUSINESS",
                "TECHNOLOGY",
                "ENTERTAINMENT",
                "SPORTS",
                "SCIENCE",
                "HEALTH"
              ]
            },
            "default": []
          },
          "locations": {
            "title": "Places",
            "type": "array",
            "description": "Local news by place name, e.g. Jakarta, London, San Francisco. An unrecognised place returns a stub feed upstream; the actor detects that and emits an ERROR row instead of a fake result.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "topicIds": {
            "title": "Topic IDs",
            "type": "array",
            "description": "Raw Google News topic IDs (the CAAq... string in a /topics/ URL). Use these to reach sub-topics that have no named section, such as a specific sport or region.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "publicationIds": {
            "title": "Publication IDs",
            "type": "array",
            "description": "Raw Google News publisher IDs (the string in a /publications/ URL) to pull a single outlet's feed.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "editions": {
            "title": "Editions",
            "type": "array",
            "description": "Country/language editions to fetch every selection from. Editions are genuinely different newsrooms, not translations. Denmark is deliberately absent: Google has no Danish edition and every Danish URL silently returns the Norwegian feed.",
            "items": {
              "type": "string",
              "enum": [
                "US:en",
                "GB:en",
                "AU:en",
                "CA:en",
                "IN:en",
                "IE:en",
                "NZ:en",
                "ZA:en",
                "SG:en",
                "PH:en",
                "NG:en",
                "KE:en",
                "ID:id",
                "MY:ms",
                "JP:ja",
                "KR:ko",
                "CN:zh-Hans",
                "TW:zh-Hant",
                "IN:hi",
                "BD:bn",
                "TH:th",
                "VN:vi",
                "DE:de",
                "FR:fr",
                "ES:es",
                "MX:es-419",
                "AR:es-419",
                "BR:pt-419",
                "PT:pt-150",
                "IT:it",
                "NL:nl",
                "PL:pl",
                "SE:sv",
                "NO:no",
                "FI:fi",
                "TR:tr",
                "RU:ru",
                "UA:uk",
                "GR:el",
                "CZ:cs",
                "RO:ro",
                "HU:hu",
                "IL:he",
                "EG:ar",
                "SA:ar",
                "AE:ar",
                "LB:ar"
              ],
              "enumTitles": [
                "United States – English (US:en)",
                "United Kingdom – English (GB:en)",
                "Australia – English (AU:en)",
                "Canada – English (CA:en)",
                "India – English (IN:en)",
                "Ireland – English (IE:en)",
                "New Zealand – English (NZ:en)",
                "South Africa – English (ZA:en)",
                "Singapore – English (SG:en)",
                "Philippines – English (PH:en)",
                "Nigeria – English (NG:en)",
                "Kenya – English (KE:en)",
                "Indonesia – Indonesian (ID:id)",
                "Malaysia – Malay (MY:ms)",
                "Japan – Japanese (JP:ja)",
                "South Korea – Korean (KR:ko)",
                "China – Chinese (CN:zh-Hans)",
                "Taiwan – Chinese (TW:zh-Hant)",
                "India – Hindi (IN:hi)",
                "Bangladesh – Bengali (BD:bn)",
                "Thailand – Thai (TH:th)",
                "Vietnam – Vietnamese (VN:vi)",
                "Germany – German (DE:de)",
                "France – French (FR:fr)",
                "Spain – Spanish (ES:es)",
                "Mexico – Spanish (MX:es-419)",
                "Argentina – Spanish (AR:es-419)",
                "Brazil – Portuguese (BR:pt-419)",
                "Portugal – Portuguese (PT:pt-150)",
                "Italy – Italian (IT:it)",
                "Netherlands – Dutch (NL:nl)",
                "Poland – Polish (PL:pl)",
                "Sweden – Swedish (SE:sv)",
                "Norway – Norwegian (NO:no)",
                "Finland – Finnish (FI:fi)",
                "Turkey – Turkish (TR:tr)",
                "Russia – Russian (RU:ru)",
                "Ukraine – Ukrainian (UA:uk)",
                "Greece – Greek (GR:el)",
                "Czechia – Czech (CZ:cs)",
                "Romania – Romanian (RO:ro)",
                "Hungary – Hungarian (HU:hu)",
                "Israel – Hebrew (IL:he)",
                "Egypt – Arabic (EG:ar)",
                "Saudi Arabia – Arabic (SA:ar)",
                "UAE – Arabic (AE:ar)",
                "Lebanon – Arabic (LB:ar)"
              ]
            },
            "default": [
              "US:en"
            ]
          },
          "resolveArticleUrls": {
            "title": "Resolve real article URLs",
            "type": "boolean",
            "description": "Turn Google's opaque redirect links into the publisher's real article URL. Strongly recommended — without it you get no clickable link, only the publisher's name and homepage. Costs one ~600 KB page fetch per article, so turn it off for fast headline-only sweeps.",
            "default": true
          },
          "maxItemsPerFeed": {
            "title": "Max items per feed",
            "minimum": 0,
            "type": "integer",
            "description": "Truncate each feed to this many items. 0 = keep everything the feed returns. This can only reduce results: Google News has no pagination, so a feed's own ceiling (~38 top / ~100 search / 50–70 topic) is the hard maximum for one request.",
            "default": 0
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Parallel article landing-page fetches. Only affects URL resolution; feeds are always fetched one at a time.",
            "default": 5
          },
          "minRequestInterval": {
            "title": "Min delay between requests",
            "minimum": 0,
            "maximum": 10,
            "type": "number",
            "description": "Minimum gap between request starts, in seconds. Paces starts without holding a worker, so it is the honest speed control once concurrency stops helping.",
            "default": 0.2
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy on the shared datacenter pool. This is the default because it is included in your plan at no extra cost and this target works through it. If you start seeing blocks, challenges or empty results, switch the group here to Residential -- it uses real consumer IPs and gets through more, but Apify bills residential traffic per gigabyte, so leave it off unless you need it.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}