{
  "openapi": "3.0.1",
  "info": {
    "title": "Google News Scraper API - Full Text, Monitoring & RSS",
    "description": "Scrape Google News by keyword and get real publisher URLs, full article text and only new articles on every scheduled run. Adds the GDELT global news index and any RSS or Atom feed, deduplicated into one table. No API key needed. For media monitoring, brand tracking and news datasets.",
    "version": "0.1",
    "x-build-id": "gl6Rh3vtLcGFm7vZ1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automly~google-news-scraper-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automly-google-news-scraper-api",
        "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/automly~google-news-scraper-api/runs": {
      "post": {
        "operationId": "runs-sync-automly-google-news-scraper-api",
        "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/automly~google-news-scraper-api/run-sync": {
      "post": {
        "operationId": "run-sync-automly-google-news-scraper-api",
        "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": 100,
            "type": "array",
            "description": "Enter one search query per line. Every query is sent to each enabled search source. Provide at least one query, feed URL or preset feed.",
            "items": {
              "type": "string"
            }
          },
          "feedUrls": {
            "title": "RSS/Atom feed URLs",
            "maxItems": 200,
            "type": "array",
            "description": "Paste RSS or Atom feed URLs to read directly. Adding a feed turns the RSS source on by itself, so you do not have to select it below.",
            "items": {
              "type": "string"
            }
          },
          "presetFeeds": {
            "title": "Preset feeds",
            "type": "array",
            "description": "Pick well-known feeds instead of looking up their URLs. Selecting a preset turns the RSS source on by itself.",
            "items": {
              "type": "string",
              "enum": [
                "bbc",
                "cnn",
                "npr",
                "nyt",
                "guardian",
                "google-news-top",
                "hacker-news"
              ],
              "enumTitles": [
                "BBC News",
                "CNN",
                "NPR",
                "The New York Times",
                "The Guardian",
                "Google News",
                "Hacker News"
              ]
            }
          },
          "sources": {
            "title": "Sources",
            "type": "array",
            "description": "Choose which sources to collect from. Google News and GDELT need at least one search query; RSS needs a feed URL or a preset feed.",
            "items": {
              "type": "string",
              "enum": [
                "google-news",
                "gdelt",
                "rss"
              ],
              "enumTitles": [
                "Google News",
                "GDELT",
                "RSS/Atom feeds"
              ]
            },
            "default": [
              "google-news"
            ]
          },
          "maxResults": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Set the total number of articles to collect. Google News returns about 100 articles per query and GDELT at most 250, so ask for more than that together with a date range and the actor splits the range into daily windows.",
            "default": 100
          },
          "sinceHours": {
            "title": "Published within the last N hours",
            "minimum": 1,
            "maximum": 8760,
            "type": "integer",
            "description": "Collect only articles published in the last N hours. Google News receives this as its own recency operator. The date range below takes precedence when you set both."
          },
          "fromDate": {
            "title": "From date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Collect articles published on or after this day, as YYYY-MM-DD. Pair a wide range with a high maximum results to make the actor split the range into daily windows and get past the per-query caps."
          },
          "toDate": {
            "title": "To date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Collect articles published on or before this day, as YYYY-MM-DD. Leave empty to collect up to now."
          },
          "includeKeywords": {
            "title": "Include keywords",
            "maxItems": 100,
            "type": "array",
            "description": "Keep only articles whose headline, summary or extracted body text contains at least one of these words. Matching ignores case and needs a whole word, so \"car\" does not match \"cargo\".",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "maxItems": 100,
            "type": "array",
            "description": "Drop articles whose headline, summary or extracted body text contains any of these words. Exclusions win over the include list.",
            "items": {
              "type": "string"
            }
          },
          "includeDomains": {
            "title": "Include domains",
            "maxItems": 500,
            "type": "array",
            "description": "Keep only articles from these publisher domains, for example reuters.com. Subdomains are matched too, and a leading www. is ignored.",
            "items": {
              "type": "string"
            }
          },
          "excludeDomains": {
            "title": "Exclude domains",
            "maxItems": 500,
            "type": "array",
            "description": "Drop articles from these publisher domains and their subdomains. Exclusions win over the include list.",
            "items": {
              "type": "string"
            }
          },
          "language": {
            "title": "Language",
            "enum": [
              "af",
              "ak",
              "sq",
              "am",
              "ar",
              "hy",
              "az",
              "eu",
              "be",
              "bem",
              "bn",
              "bh",
              "bs",
              "br",
              "bg",
              "km",
              "ca",
              "chr",
              "ny",
              "zh-cn",
              "zh-tw",
              "co",
              "hr",
              "cs",
              "da",
              "nl",
              "en",
              "eo",
              "et",
              "ee",
              "fo",
              "tl",
              "fi",
              "fr",
              "fy",
              "gaa",
              "gl",
              "ka",
              "de",
              "el",
              "gn",
              "gu",
              "ht",
              "ha",
              "haw",
              "he",
              "iw",
              "hi",
              "hu",
              "is",
              "ig",
              "id",
              "ia",
              "ga",
              "it",
              "ja",
              "jw",
              "kn",
              "kk",
              "rw",
              "rn",
              "kg",
              "ko",
              "kri",
              "ku",
              "ckb",
              "ky",
              "lo",
              "la",
              "lv",
              "ln",
              "lt",
              "loz",
              "lg",
              "ach",
              "mk",
              "mg",
              "ms",
              "ml",
              "mt",
              "mi",
              "mr",
              "mfe",
              "mo",
              "mn",
              "sr-ME",
              "ne",
              "pcm",
              "nso",
              "no",
              "nn",
              "oc",
              "or",
              "om",
              "ps",
              "fa",
              "pl",
              "pt",
              "pt-br",
              "pt-pt",
              "pa",
              "qu",
              "ro",
              "rm",
              "nyn",
              "ru",
              "gd",
              "sr",
              "sh",
              "st",
              "tn",
              "crs",
              "sn",
              "sd",
              "si",
              "sk",
              "sl",
              "so",
              "es",
              "es-419",
              "su",
              "sw",
              "sv",
              "tg",
              "ta",
              "tt",
              "te",
              "th",
              "ti",
              "to",
              "lua",
              "tum",
              "tr",
              "tk",
              "tw",
              "ug",
              "uk",
              "ur",
              "uz",
              "vi",
              "cy",
              "wo",
              "xh",
              "yi",
              "yo",
              "zu"
            ],
            "type": "string",
            "description": "Pick the language edition Google News answers in. The same choice also drops articles that report a different language of their own, so a source that reports one - GDELT does, Google News and RSS do not - is filtered to match. Leave it empty for the English edition and no language filter."
          },
          "country": {
            "title": "Country",
            "enum": [
              "af",
              "al",
              "dz",
              "as",
              "ad",
              "ao",
              "ai",
              "aq",
              "ag",
              "ar",
              "am",
              "aw",
              "ac",
              "au",
              "at",
              "az",
              "bs",
              "bh",
              "bd",
              "bb",
              "by",
              "be",
              "bz",
              "bj",
              "bm",
              "bt",
              "bo",
              "ba",
              "bw",
              "bv",
              "br",
              "io",
              "bn",
              "bg",
              "bf",
              "bi",
              "kh",
              "cm",
              "ca",
              "cv",
              "cat",
              "ky",
              "cf",
              "td",
              "cl",
              "cn",
              "cx",
              "cc",
              "co",
              "km",
              "cg",
              "cd",
              "ck",
              "cr",
              "ci",
              "hr",
              "cy",
              "cz",
              "dk",
              "dj",
              "dm",
              "do",
              "tl",
              "ec",
              "eg",
              "sv",
              "gq",
              "er",
              "ee",
              "et",
              "fk",
              "fo",
              "fj",
              "fi",
              "fr",
              "gf",
              "pf",
              "tf",
              "ga",
              "gm",
              "ge",
              "de",
              "gh",
              "gi",
              "gr",
              "gl",
              "gd",
              "gp",
              "gu",
              "gt",
              "gn",
              "gw",
              "gy",
              "ht",
              "hm",
              "hn",
              "hk",
              "hu",
              "is",
              "in",
              "id",
              "iq",
              "ie",
              "il",
              "it",
              "jm",
              "jp",
              "jo",
              "kz",
              "ke",
              "ki",
              "kw",
              "kg",
              "la",
              "lv",
              "lb",
              "ls",
              "lr",
              "ly",
              "li",
              "lt",
              "lu",
              "mo",
              "mk",
              "mg",
              "mw",
              "my",
              "mv",
              "ml",
              "mt",
              "mh",
              "mq",
              "mr",
              "mu",
              "yt",
              "mx",
              "fm",
              "md",
              "mc",
              "mn",
              "ms",
              "ma",
              "mz",
              "na",
              "nr",
              "np",
              "nl",
              "an",
              "nc",
              "nz",
              "ni",
              "ne",
              "ng",
              "nu",
              "nf",
              "mp",
              "no",
              "om",
              "pk",
              "pw",
              "ps",
              "pa",
              "pg",
              "py",
              "pe",
              "ph",
              "pn",
              "pl",
              "pt",
              "pr",
              "qa",
              "re",
              "ro",
              "ru",
              "rw",
              "kn",
              "lc",
              "vc",
              "ws",
              "sm",
              "st",
              "sa",
              "sn",
              "cs",
              "sc",
              "sl",
              "sg",
              "sk",
              "si",
              "sb",
              "so",
              "za",
              "gs",
              "kr",
              "es",
              "lk",
              "sh",
              "pm",
              "sr",
              "sj",
              "sz",
              "se",
              "ch",
              "tw",
              "tj",
              "tz",
              "th",
              "tg",
              "tk",
              "to",
              "tt",
              "tn",
              "tr",
              "tm",
              "tc",
              "tv",
              "ug",
              "ua",
              "ae",
              "gb",
              "us",
              "um",
              "uy",
              "uz",
              "vu",
              "va",
              "ve",
              "vn",
              "vg",
              "vi",
              "wf",
              "eh",
              "ye",
              "zm",
              "zw"
            ],
            "type": "string",
            "description": "Pick the country edition Google News answers from. The same choice also drops articles that report a different country of their own, so a source that reports one - GDELT does, Google News and RSS do not - is filtered to match. Leave it empty for the US edition and no country filter."
          },
          "resolveGoogleUrls": {
            "title": "Resolve Google News URLs",
            "type": "boolean",
            "description": "Turn Google News redirect links into real publisher URLs. Each link costs about 120 KB of proxy traffic; links that cannot be resolved are left as they are.",
            "default": false
          },
          "includeFullText": {
            "title": "Include full text",
            "type": "boolean",
            "description": "Download each article page and extract its body text. Google News links are resolved to the publisher automatically when this is on, because a news.google.com link is a redirect page with no article in it. Adds proxy traffic per article. Some publishers refuse automated fetches: on a measured 80-article run, 71 returned text and 9 did not. Those rows keep their summary and leave the body empty rather than storing navigation, and the run log reports the split.",
            "default": false
          },
          "skipSeenArticles": {
            "title": "Skip already seen articles",
            "type": "boolean",
            "description": "Return only articles that earlier runs did not already deliver. Use this to poll a query on a schedule.",
            "default": false
          },
          "seenArticlesStoreName": {
            "title": "Seen articles store name",
            "minLength": 1,
            "maxLength": 63,
            "type": "string",
            "description": "Name the named key-value store that remembers delivered articles. Give each monitored query its own store name so their histories stay separate.",
            "default": "news-seen-articles"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Select the proxy used for every request. Keep a rotating group enabled: GDELT rate-limits by IP, and every GDELT request and retry opens a fresh session to draw a different exit address, which is what lets multi-window runs through.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}