{
  "openapi": "3.0.1",
  "info": {
    "title": "Google News Scraper — Articles, Topics & Publisher URLs",
    "description": "Scrape Google News searches, topics, full coverage stories and publications in any country edition: real publisher URLs, source, date, thumbnail, authors; optional full text.",
    "version": "0.1",
    "x-build-id": "oJDW9snJiSGAPaVoY"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tortuga~google-news-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tortuga-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/tortuga~google-news-scraper/runs": {
      "post": {
        "operationId": "runs-sync-tortuga-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/tortuga~google-news-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-tortuga-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": {
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "Keywords to search on Google News, one per line. Google News operators work: \"exact phrase\", -exclude, OR, site:reuters.com, intitle:nvidia, when:1d / when:7d, after:2026-09-01 before:2026-09-08.",
            "items": {
              "type": "string"
            }
          },
          "topics": {
            "title": "Topics",
            "type": "array",
            "description": "Google News sections to scrape for each edition: Top stories, World, the edition's country (Nation), Business, Technology, Entertainment, Sports, Science, Health. Topic pages give real publisher URLs, thumbnails, authors and story clusters directly.",
            "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"
              ]
            }
          },
          "startUrls": {
            "title": "Google News URLs",
            "type": "array",
            "description": "Optional: paste news.google.com URLs. Supported: search (/search?q=), topics (/topics/...), sections (/headlines/section/topic/BUSINESS), local news (/headlines/section/geo/...), full coverage stories (/stories/...), publications (/publications/...), the home page and RSS feed URLs. The URL's hl/gl/ceid edition is kept.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "editions": {
            "title": "Editions (language-country)",
            "type": "array",
            "description": "Google News editions to scrape each query and topic in, as language-COUNTRY: en-US, en-GB, en-IN, de-DE, fr-FR, es-ES, es-MX, pt-BR, it-IT, ja-JP, ... A ceid such as US:en also works. Empty = en-US.",
            "items": {
              "type": "string"
            }
          },
          "timeRange": {
            "title": "Time range (searches)",
            "enum": [
              "1d",
              "7d",
              "1h",
              "30d",
              "1y"
            ],
            "type": "string",
            "description": "Only articles from the past hour, day, 7 days, 30 days or year. Adds Google's when: operator to queries that have no date operator of their own."
          },
          "dateFrom": {
            "title": "From date (searches)",
            "type": "string",
            "description": "Only articles published on or after this date: YYYY-MM-DD or a period such as '30 days'. Uses Google's after: operator."
          },
          "dateTo": {
            "title": "To date (searches)",
            "type": "string",
            "description": "Only articles published on or before this date (YYYY-MM-DD). Uses Google's before: operator."
          },
          "maxArticlesPerSource": {
            "title": "Max articles per query, topic or URL",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Per search query, topic or URL in each edition. Google returns up to 100 articles per search; above 100 the search is split into one-day windows (newest first, back from 'To date' or today) to collect more.",
            "default": 100
          },
          "decodeUrls": {
            "title": "Decode publisher URLs",
            "type": "boolean",
            "description": "Resolve Google's news.google.com/rss/articles/... redirect links of search results to the real publisher article URL (2 light requests per article). Turn off to only get titles, sources and dates faster. Topic and story pages always have the real URL.",
            "default": true
          },
          "includeDetails": {
            "title": "Fetch article pages (author, full text, description)",
            "type": "boolean",
            "description": "Open every publisher article page and add canonical URL, authors, description (snippet), full text (readability-style extraction), publish/modify time from the page metadata, image, keywords and paywall flag. One extra request per article; charged as 'article with details'. Paywalled or bot-protected sites return metadata only or a detailError.",
            "default": false
          },
          "includeFullText": {
            "title": "Include full text",
            "type": "boolean",
            "description": "With article pages on: keep the extracted article text. Turn off to keep only metadata (smaller dataset).",
            "default": true
          },
          "maxItems": {
            "title": "Max articles in total",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many articles for the whole run. Keeps cost predictable.",
            "default": 100
          },
          "onlyNewOrChanged": {
            "title": "Only new or changed items",
            "type": "boolean",
            "description": "Remember what earlier runs of this search returned and output only new items or items whose price/status changed. Use with a Schedule; unchanged items are not charged. Here: each article is output once, the first time it appears for this input; known articles are skipped before any URL decoding.",
            "default": false
          },
          "monitoringKey": {
            "title": "Monitoring key",
            "type": "string",
            "description": "Name for this watch, so several schedules on the same search stay separate; defaults to a key derived from the search input."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Used for publisher article pages, and for Google News when Google throttles the direct route (Google requests go out directly first: ~10x faster). Each proxy IP gets its own Google cookies; throttled IPs are replaced, and RESIDENTIAL is tried when datacenter IPs stay throttled and your plan has 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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}