{
  "openapi": "3.0.1",
  "info": {
    "title": "Google News Scraper: Search, Top Stories, Topics & Local News",
    "description": "Monitor Google News by keyword, top stories, topic section or place, in 84 country and language editions. Clean headlines, publisher name and site, UTC dates, related coverage, optional real article URLs, de-duplication across queries and an only-new-since-last-run mode. No login.",
    "version": "0.0",
    "x-build-id": "rUwYle2TekhUSLHxh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/winterlock~google-news-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-winterlock-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/winterlock~google-news-scraper/runs": {
      "post": {
        "operationId": "runs-sync-winterlock-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/winterlock~google-news-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-winterlock-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "What to scrape",
            "enum": [
              "search",
              "topStories",
              "topic",
              "location"
            ],
            "type": "string",
            "description": "Search Google News by keywords, read the top stories, read topic sections (Business, Technology...), or read local news for a place.",
            "default": "search"
          },
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "For Search. One query per line. Google News operators work: \"exact phrase\", OR, -exclude, intitle:word, site:example.com, when:7d, after:2026-01-01, before:2026-02-01.",
            "items": {
              "type": "string"
            }
          },
          "topics": {
            "title": "Topics",
            "type": "array",
            "description": "For Topic sections. WORLD, NATION, BUSINESS, TECHNOLOGY, ENTERTAINMENT, SPORTS, SCIENCE or HEALTH, or paste a news.google.com/topics/... link for any other topic.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "For Local news. City, region or country names as Google News knows them: Chicago, New York, Munich, Texas. A place Google does not know is reported in the log and skipped, not billed.",
            "items": {
              "type": "string"
            }
          },
          "editions": {
            "title": "Editions (country:language)",
            "type": "array",
            "description": "Google News editions to read, as COUNTRY:language codes: US:en, GB:en, IN:en, DE:de, FR:fr, ES:es, BR:pt-419, JP:ja and 76 more (see README). Each query, topic or place runs once per edition; an article found in two editions is saved once.",
            "default": [
              "US:en"
            ],
            "items": {
              "type": "string"
            }
          },
          "timeRange": {
            "title": "Time range",
            "enum": [
              "any",
              "1h",
              "12h",
              "1d",
              "7d",
              "30d",
              "1y"
            ],
            "type": "string",
            "description": "For Search. How far back to look. Ignored when a From or To date is set, or when a query has its own when:/after:/before:.",
            "default": "1d"
          },
          "dateFrom": {
            "title": "From date",
            "type": "string",
            "description": "For Search. YYYY-MM-DD, inclusive. Overrides Time range."
          },
          "dateTo": {
            "title": "To date",
            "type": "string",
            "description": "For Search. YYYY-MM-DD, inclusive. Leave empty for up to today."
          },
          "splitByDay": {
            "title": "Split by day (more than 100 results per query)",
            "type": "boolean",
            "description": "Google returns at most 100 articles per search. With a From date set, this runs the search once per day (newest day first), so a month can return up to about 3,000 articles. One request per day.",
            "default": false
          },
          "sites": {
            "title": "Only these publishers (sites)",
            "type": "array",
            "description": "For Search. Limit results to these websites, for example reuters.com or bbc.co.uk. Several sites are combined with OR in one search.",
            "items": {
              "type": "string"
            }
          },
          "maxArticlesPerSearch": {
            "title": "Max articles per search query",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "For Search. Per query and edition. Google serves up to 100 per search; with Split by day up to 100 per day.",
            "default": 100
          },
          "maxTopStories": {
            "title": "Max top stories per edition",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "For Top stories. The feed holds about 30 to 40 stories.",
            "default": 100
          },
          "maxArticlesPerTopic": {
            "title": "Max articles per topic",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "For Topic sections. Per topic and edition; a topic feed holds about 70 articles.",
            "default": 100
          },
          "maxArticlesPerLocation": {
            "title": "Max articles per location",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "For Local news. Per place and edition; a local feed holds up to about 70 articles.",
            "default": 100
          },
          "includeRelatedCoverage": {
            "title": "Include related coverage",
            "type": "boolean",
            "description": "For clustered stories Google lists up to four other outlets covering the same story. Adds them to the article's row (title, publisher, link) at no extra cost.",
            "default": true
          },
          "resolveOriginalUrls": {
            "title": "Resolve publisher article URLs (paid add-on)",
            "type": "boolean",
            "description": "Google News links are redirects. On, each article's real URL on the publisher's site is looked up (one extra request per article plus one per 20) and charged as a separate event, only when found. Off, originalUrl stays empty.",
            "default": false
          },
          "onlyNewArticles": {
            "title": "Only articles not seen in earlier runs (monitoring)",
            "type": "boolean",
            "description": "Remembers which articles each query, topic or place has already delivered, and on later runs returns only new ones. Schedule the Actor to get a feed of new coverage and pay only for what is new.",
            "default": false
          },
          "maxItems": {
            "title": "Max items in total",
            "minimum": 1,
            "type": "integer",
            "description": "Stop the run after saving this many articles. Leave empty for no limit."
          },
          "maxConcurrency": {
            "title": "Max parallel requests",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Only matters when resolving publisher URLs, which takes one request per article. Keep it low to stay under Google's rate limits.",
            "default": 4
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Not needed for most runs. If the log shows HTTP 429 or 503 from Google, turn on Apify Proxy. Apify Proxy is used with datacenter IPs; residential groups are ignored.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}