{
  "openapi": "3.0.1",
  "info": {
    "title": "Google News Scraper API",
    "description": "Google News scraper for brand, competitor and market monitoring. Search by country, language and date; filter publishers, resolve URLs and optionally extract article text. Free analytics report publisher/domain share, daily/query volume. From $2.50 per 1,000 articles, platform usage included.",
    "version": "0.1",
    "x-build-id": "evY6jJfWzh2EwhlRw"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zenomastro~google-news-intelligence/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zenomastro-google-news-intelligence",
        "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/zenomastro~google-news-intelligence/runs": {
      "post": {
        "operationId": "runs-sync-zenomastro-google-news-intelligence",
        "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/zenomastro~google-news-intelligence/run-sync": {
      "post": {
        "operationId": "run-sync-zenomastro-google-news-intelligence",
        "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",
            "maxItems": 50,
            "type": "array",
            "description": "Google News search queries, one per line, e.g. OpenAI or \"electric vehicles\" -Tesla. Google operators such as quotes, OR, -word and site:reuters.com work. Up to 50 queries. Leave it empty to read only topics, locations or topic URLs.",
            "default": [
              "OpenAI"
            ],
            "items": {
              "type": "string"
            }
          },
          "topics": {
            "title": "Google News topics (no query needed)",
            "type": "array",
            "description": "Optional headline feeds for the selected edition, e.g. TECHNOLOGY or TOP_STORIES. Each topic returns about 30-70 current articles and is charged like search results.",
            "items": {
              "type": "string",
              "enum": [
                "TOP_STORIES",
                "WORLD",
                "NATION",
                "BUSINESS",
                "TECHNOLOGY",
                "ENTERTAINMENT",
                "SPORTS",
                "SCIENCE",
                "HEALTH"
              ],
              "enumTitles": [
                "Top stories",
                "World",
                "Nation (country)",
                "Business",
                "Technology",
                "Entertainment",
                "Sports",
                "Science",
                "Health"
              ]
            },
            "default": []
          },
          "locations": {
            "title": "Local news for places (no query needed)",
            "maxItems": 20,
            "type": "array",
            "description": "Optional places for Google News' Local section, one per line, e.g. Milan, New York, Texas or Bavaria. Each place returns its current local headlines in every selected edition and is charged like search results. Up to 20.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "topicUrls": {
            "title": "Google News topic or section URLs",
            "maxItems": 20,
            "type": "array",
            "description": "Optional news.google.com pages to follow, e.g. https://news.google.com/topics/CAAqJggKIiBDQkFTRWdvSUwyMHZNRGRqTVhZU0FtVnVHZ0pWVXlnQVAB (copy the URL of any topic, section or publication page). Up to 20.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Google News edition language, e.g. en, it, de, fr, pt-BR, es-419 or zh-Hant. Combined with the country code to pick the edition (en + US = U.S. English edition).",
            "default": "en"
          },
          "country": {
            "title": "Country code",
            "type": "string",
            "description": "Two-letter country code of the Google News edition, e.g. US, GB, IT, DE or BR. Also used for topic feeds and URL decoding.",
            "default": "US"
          },
          "editions": {
            "title": "More editions: several countries and languages in one run",
            "maxItems": 20,
            "type": "array",
            "description": "Optional Google News editions written as COUNTRY:language, one per line, e.g. US:en, GB:en, IT:it, DE:de, FR:fr, ES:es, BR:pt-419, MX:es-419, JP:ja or IN:hi (the ceid value in a Google News URL). Every query, topic and location is read in each edition; an article found in several editions or by several queries is saved and charged once. When set, Language and Country code are ignored. Up to 20.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "timeRange": {
            "title": "Recent news window",
            "enum": [
              "any",
              "1h",
              "6h",
              "1d",
              "7d",
              "30d",
              "1y"
            ],
            "type": "string",
            "description": "Relative recency filter sent to Google as when:1d etc., e.g. 1d for the last 24 hours. Ideal for schedules because it needs no date updates. Ignored when dateFrom or dateTo is set, and for topic, local and URL feeds (use Published after for those).",
            "default": "any"
          },
          "maxItemsPerQuery": {
            "title": "Maximum articles per query",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum articles saved per query, topic, location or topic URL in each edition, e.g. 50. Google News returns at most about 100 articles per feed request; to collect more for one query, set dateFrom and dateTo and keep daily splitting on.",
            "default": 100
          },
          "dateFrom": {
            "title": "From date (YYYY-MM-DD)",
            "type": "string",
            "description": "Optional start date (inclusive) in YYYY-MM-DD format, e.g. 2026-09-01. Sent to Google as after:2026-09-01. Leave empty for the latest news."
          },
          "dateTo": {
            "title": "To date (YYYY-MM-DD, exclusive)",
            "type": "string",
            "description": "Optional end date (exclusive) in YYYY-MM-DD format, e.g. 2026-10-01 to include 30 September. Must be later than dateFrom."
          },
          "splitDateRangeByDay": {
            "title": "Split date ranges by day to reduce RSS caps",
            "type": "boolean",
            "description": "When both dates are set, query each day separately (e.g. 30 requests for September) so busy topics are not cut at Google's ~100-article feed limit. Turn off for a single request per query.",
            "default": true
          },
          "publishedAfter": {
            "title": "Published after (optional)",
            "type": "string",
            "description": "Drop articles published before this moment, e.g. 2026-09-01 or 2026-09-01T08:00:00Z (no zone = UTC). Applies to search and topic feeds; dropped articles are not charged."
          },
          "includeDomains": {
            "title": "Only these publisher domains",
            "type": "array",
            "description": "Keep only articles from these publisher domains, e.g. reuters.com or techcrunch.com (subdomains included). Filtered articles are never charged.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeDomains": {
            "title": "Exclude publisher domains",
            "type": "array",
            "description": "Drop articles from these publisher domains, e.g. example-tabloid.com (subdomains included). Filtered articles are never charged.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "resolveArticleUrls": {
            "title": "Decode publisher article URLs",
            "type": "boolean",
            "description": "Decode Google News links (news.google.com/rss/articles/CBMi...) into the real publisher URL, e.g. https://www.reuters.com/.... Adds articleUrl, articleUrlDecoded and decodeError. When Google refuses, articleUrl keeps the Google link and articleUrlDecoded is false. Up to 2,000 articles per run.",
            "default": false
          },
          "enrichArticles": {
            "title": "Extract full article text",
            "type": "boolean",
            "description": "Decode the publisher URL and extract the article page: cleaned text, canonical URL, author, title, description, image and publish date. articleEnrichmentSuccess is true only when the publisher page itself was read; paywalled or blocked pages get a clear articleEnrichmentError.",
            "default": false
          },
          "maxArticleEnrichments": {
            "title": "Maximum full articles",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "Hard cap on publisher article pages fetched per run when full-text extraction is on, e.g. 100. Articles above the cap are still saved without text.",
            "default": 100
          },
          "maxArticleChars": {
            "title": "Maximum article characters",
            "minimum": 1000,
            "maximum": 500000,
            "type": "integer",
            "description": "Maximum characters of cleaned article text kept per article, e.g. 100000. Longer texts are cut and flagged with articleTextTruncated.",
            "default": 100000
          },
          "monitorName": {
            "title": "News monitor name (optional)",
            "type": "string",
            "description": "Any stable name, e.g. ai-competitors. Reuse it on scheduled runs to remember articles already seen: rows get isNew, and onlyNew returns only new articles."
          },
          "onlyNew": {
            "title": "Emit only newly seen articles",
            "type": "boolean",
            "description": "With a monitorName, save (and charge) only articles not delivered by earlier runs of the same monitor, e.g. for an hourly alert feed. Requires monitorName.",
            "default": false
          },
          "includeQuerySummaries": {
            "title": "Per-query summary rows (free)",
            "type": "boolean",
            "description": "Add one free query_summary row per query, topic, location or topic URL and edition: articles saved, unique publishers, top publishers, articles per day, first and last publish time, filtered and duplicate counts, and possiblyTruncated when Google's ~100-article feed cap was probably hit. Not charged.",
            "default": false
          },
          "analyticsKeywords": {
            "title": "Coverage analytics keywords",
            "maxItems": 100,
            "type": "array",
            "description": "Optional brands, products or phrases counted in the free summary row across titles, descriptions and article text, e.g. GPT-5 or Anthropic.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "requestTimeoutSecs": {
            "title": "Request timeout",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "Seconds to wait for each Google News or publisher request before retrying, e.g. 25. Range 5-120. Runs also stop starting new requests shortly before the run timeout, so results and the monitor state are always saved.",
            "default": 25
          },
          "retries": {
            "title": "Retries",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "How many times a failed feed request is retried with backoff, e.g. 2. Range 0-5. Rate limits (HTTP 429/503) wait longer and honour Retry-After; answers such as HTTP 404 are not retried.",
            "default": 2
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}