{
  "openapi": "3.0.1",
  "info": {
    "title": "Google News Scraper: Search, Topics, Real Publisher URLs",
    "description": "Google News scraper and API: search any keyword, topic or feed in any language and country, with every news.google.com link decoded to the publisher's real URL. Title, source, time, image, description, author. $1.50 per 1,000 articles. No login, no API key.",
    "version": "0.1",
    "x-build-id": "yayepTVsfvacbCoOz"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/datagleaner~google-news-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-datagleaner-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/datagleaner~google-news-scraper/runs": {
      "post": {
        "operationId": "runs-sync-datagleaner-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/datagleaner~google-news-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-datagleaner-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": {
          "queries": {
            "title": "Search queries",
            "type": "array",
            "description": "What to search Google News for. Google operators work: \"exact phrase\", OR, -exclude, site:reuters.com, intitle:word. Each query is one feed of at most 100 articles.",
            "items": {
              "type": "string"
            }
          },
          "topics": {
            "title": "Topics (front page and sections)",
            "type": "array",
            "description": "Optional. Google News front page (TOP) and section feeds. Each topic is one feed.",
            "items": {
              "type": "string",
              "enum": [
                "TOP",
                "WORLD",
                "NATION",
                "BUSINESS",
                "TECHNOLOGY",
                "ENTERTAINMENT",
                "SPORTS",
                "SCIENCE",
                "HEALTH"
              ],
              "enumTitles": [
                "Top stories (front page)",
                "World",
                "Nation (your country)",
                "Business",
                "Technology",
                "Entertainment",
                "Sports",
                "Science",
                "Health"
              ]
            }
          },
          "feedUrls": {
            "title": "Google News URLs",
            "type": "array",
            "description": "Optional. Any news.google.com RSS or page URL, for example a /topics/... or /search?q=... page, or a publication or story link. Page URLs are converted to their RSS feed.",
            "items": {
              "type": "string"
            }
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Google News interface language (hl). Common pairs with Country: en-US + US, en-GB + GB, en-IN + IN, zh-TW + TW, zh-CN + CN, ja + JP, ko + KR, de + DE, fr + FR, es-419 + MX, pt-BR + BR. A pair Google does not serve returns no articles, and the status message says so.",
            "default": "en-US"
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Edition country (gl), two letters. Examples: US, GB, TW, JP, DE, FR, MX, BR, KR. The matching ceid value (for example TW:zh-Hant) is derived for you.",
            "default": "US"
          },
          "timeframe": {
            "title": "Time range for search queries",
            "enum": [
              "any",
              "1h",
              "1d",
              "7d",
              "30d",
              "1y"
            ],
            "type": "string",
            "description": "Adds Google's when: operator to every search query. Does not apply to topics or feed URLs.",
            "default": "any"
          },
          "maxArticlesPerQuery": {
            "title": "Max articles per query or topic",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Google returns at most about 100 articles per feed, so 100 is the ceiling. To get more on a search query, turn on 'Go past 100 articles per query'. Each pushed article is billed, so this is also your cost cap per feed.",
            "default": 100
          },
          "splitByTime": {
            "title": "Go past 100 articles per query",
            "type": "boolean",
            "description": "Google caps a feed at about 100 articles. When on, each search query is asked again over day windows (Google's after:/before:), newest first, covering the last 90 days or your time range, and any window that comes back full is split further. Stops at the cap below. Search queries only. Every article is billed once; repeats are dropped.",
            "default": false
          },
          "splitMaxArticles": {
            "title": "Max articles per query when going past 100",
            "minimum": 100,
            "maximum": 5000,
            "type": "integer",
            "description": "Cap per search query when 'Go past 100 articles per query' is on. Also your cost cap per query.",
            "default": 500
          },
          "decodeUrls": {
            "title": "Decode publisher URLs",
            "type": "boolean",
            "description": "Resolve each news.google.com link to the publisher's real article URL (2 extra requests per article). If an item cannot be decoded it is still returned, with articleUrl empty.",
            "default": true
          },
          "fetchArticleMeta": {
            "title": "Read the publisher page for image, description and author",
            "type": "boolean",
            "description": "Open each publisher page and read its image (og:image), description, author and published time from the meta tags and JSON-LD. On by default. Fields stay empty where the publisher blocks the request or has no such tag. Turn it off for a faster run with links only. Needs Decode publisher URLs.",
            "default": true
          },
          "requestDelaySeconds": {
            "title": "Delay between requests (seconds)",
            "minimum": 0,
            "maximum": 60,
            "type": "number",
            "description": "Pause before requests, randomised up to 1.5x.",
            "default": 0.3
          },
          "maxConcurrency": {
            "title": "Concurrent decodes",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many articles are decoded at the same time. Lower it if you see rate-limit retries in the log.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional Apify Proxy. Default is no proxy; Google News answered from Apify datacenter IPs without one."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}