{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Search Scraper – Web & News SERP Results",
    "description": "Scrape Google search results as data: title, link, snippet and position for web search, or headline, publisher link, date and source from Google News. Uses Apify's Google SERP proxy for web and Google News's own feeds for news. No API key, no login, no browser. Unofficial.",
    "version": "0.1",
    "x-build-id": "xruZttquZ4Y9KQadB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/simple.actors~google-search/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-simple.actors-google-search",
        "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/simple.actors~google-search/runs": {
      "post": {
        "operationId": "runs-sync-simple.actors-google-search",
        "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/simple.actors~google-search/run-sync": {
      "post": {
        "operationId": "run-sync-simple.actors-google-search",
        "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 terms (one per line)",
            "type": "array",
            "description": "What to search Google for, one search per line. Google's operators work: \"exact phrase\" in quotes, site:example.com to limit to one site, a minus sign to exclude a word. Web search returns about 10 results per page requested (see \"Results per search\"); news search returns up to 100 stories.",
            "items": {
              "type": "string"
            }
          },
          "searchType": {
            "title": "Search type: web results or news stories",
            "enum": [
              "web",
              "news"
            ],
            "type": "string",
            "description": "What kind of Google search. \"web\" is google.com — title, link, snippet, in Google's ranking order. \"news\" is Google News — headline, the publisher's own link, date and source, newest first, and much cheaper per result. A pasted Google URL in \"Google page links\" keeps its own tab regardless of this setting.",
            "default": "web"
          },
          "startUrls": {
            "title": "Google page URLs (search, News topic, RSS)",
            "type": "array",
            "description": "Google pages to read instead of, or as well as, search terms: a google.com search results URL (its News tab, tbm=nws, is read as a news search; anything else as a web search), a Google News search, topic, section or publication page, the Google News front page, or a Google News RSS link. Use \"Search terms\" above for plain queries.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItems": {
            "title": "Results per search",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many results to return per search. Web search: Google serves about 10 per page and every page costs one search request, so the default of 10 is one page and 100 is up to ten — this is the cost knob. News search: up to 100 stories arrive in one request, so the default is all of them; lower it if you want fewer. Paging stops early when Google has no more."
          },
          "language": {
            "title": "Edition language (e.g. en-US, en-GB, fr)",
            "type": "string",
            "description": "Edition language as Google News writes it: en-US, en-GB, fr, de, es-419, hi, ja… Together with the country it picks which Google News edition answers — the same search returns different stories in different editions. Defaults to en-US.",
            "default": "en-US"
          },
          "country": {
            "title": "Edition country (two-letter code)",
            "type": "string",
            "description": "Edition country as a two-letter code: US, GB, CA, AU, IN, DE, FR… Defaults to US. Pick the country the readers are in, not the country the news is about — a search for a UK council from the US edition still works, but the GB edition ranks local publishers higher.",
            "default": "US"
          },
          "onlyNewerThan": {
            "title": "Only results newer than (window or ISO date)",
            "type": "string",
            "description": "Keep only results newer than this point. Takes a window like \"24 hours\", \"last 7 days\" or \"90 minutes\", or an ISO date such as 2026-08-01. On a news search it is exact — every story is dated, and the window is also sent to Google as its when: operator. On a web search it is best-effort: only results whose snippet states a date can be judged, and the undated majority is kept rather than silently dropped."
          },
          "resolveLinks": {
            "title": "Resolve news links to the publisher (news only)",
            "type": "boolean",
            "description": "News search only; web results already carry the real address. Google News hands out its own wrapped links (news.google.com/rss/articles/…), which only a browser can follow. On, each story's link is resolved to the publisher's real address. Off, the run is faster and `link` is the Google wrapper. Resolved links are remembered between runs.",
            "default": true
          },
          "proxy": {
            "title": "Proxy (news reads only)",
            "type": "object",
            "description": "Used for news reads only — defaults to Apify's datacenter proxy, which is included in every plan and is enough for Google News. Web search always goes through Apify's Google SERP proxy, which is the sanctioned route to Google's results page and is not configurable here.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}