{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Search Results Scraper: Real SERP + AI Overview",
    "description": "The real Google result page, not a cheap substitute: organic results with real URLs, AI Overview with sources, People also ask, local pack, products, videos, news, related searches and ads in one price. Any country and city. Rank tracker with changes. $4/1K pages.",
    "version": "0.1",
    "x-build-id": "gbPNIHJwwIJFbwZ9x"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/s_actors~google-search-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-s_actors-google-search-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/s_actors~google-search-scraper/runs": {
      "post": {
        "operationId": "runs-sync-s_actors-google-search-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/s_actors~google-search-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-s_actors-google-search-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 you would type into Google, one per line: \"best running shoes\", \"plumber austin\", \"site:reddit.com crm\". Every Google operator works (site:, \"quotes\", -minus, intitle:, OR). You can also paste a Google search URL (https://www.google.com/search?q=...): its query, time filter and page are used.",
            "items": {
              "type": "string"
            }
          },
          "maxPagesPerQuery": {
            "title": "📄 Pages per query",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Result pages to read for each query (~10 organic results per page; Google no longer shows 100 per page). 1 page = top 10, 3 = top 30, 10 = top 100. Each page is one charge. The Actor stops early when Google has no next page.",
            "default": 1
          },
          "country": {
            "title": "🌍 Country",
            "enum": [
              "us",
              "gb",
              "ca",
              "au",
              "nz",
              "ie",
              "in",
              "sg",
              "za",
              "ph",
              "de",
              "at",
              "ch",
              "fr",
              "be",
              "nl",
              "es",
              "pt",
              "it",
              "se",
              "dk",
              "no",
              "fi",
              "pl",
              "cz",
              "br",
              "mx",
              "ar",
              "jp",
              "kr",
              "tr",
              "ae"
            ],
            "type": "string",
            "description": "Google of this country: its domain, its market and its local results. Every page is checked to really come from this market (Google otherwise answers for the proxy IP country) and retried if not.",
            "default": "us"
          },
          "location": {
            "title": "📍 City (local results)",
            "type": "string",
            "description": "Search as if you were in this city: \"Austin, Texas\", \"Manchester, England\", \"Munich, Bavaria\". Local packs, \"near me\" queries and rankings follow it. Empty = the country's largest city (New York for the US, London, Berlin...)."
          },
          "language": {
            "title": "🗣️ Language",
            "type": "string",
            "description": "Google interface language code (hl): en, de, fr, es, pt, it, nl, ja... Empty = the country's main language. Labels of Google blocks follow it; the results are what Google shows in that language."
          },
          "timeRange": {
            "title": "🕐 Time range",
            "enum": [
              "anytime",
              "hour",
              "day",
              "week",
              "month",
              "year"
            ],
            "type": "string",
            "description": "Only pages Google dated within this time (the \"Tools > Any time\" menu of Google): brand monitoring, fresh content, news.",
            "default": "anytime"
          },
          "outputFormat": {
            "title": "📦 Output format",
            "enum": [
              "pages",
              "organic"
            ],
            "type": "string",
            "description": "Pages = the full page in one row, with every Google block as a list. Organic = one row per organic result (position, title, URL, snippet), easiest for Excel and Google Sheets; the other blocks are then left out. The price is per page in both cases.",
            "default": "pages"
          },
          "trackDomains": {
            "title": "📈 Track these domains (rank tracker)",
            "type": "array",
            "description": "Your domains and competitors, one per line: \"nike.com\", \"runrepeat.com\". Each page row gets trackedSummary (\"runrepeat.com #2 (↑4) · nike.com #8 · geico.com —\", in the Pages table) and trackedDomains (first page row of each query, Rank tracker table): the best position of each domain in the pages read, its URL, the position in the previous run, the change (+3 = moved up 3) and a status (up, down, same, new, lost, not found). Subdomains count (blog.nike.com = nike.com).",
            "items": {
              "type": "string"
            }
          },
          "historyName": {
            "title": "📁 Project name (position history)",
            "type": "string",
            "description": "Where the Actor keeps the positions of this run, to compare them next time. previousPosition and change come from the last run with the same project name, query, country, city, language and time range. Use one name per site or client (\"client-a\", \"shoes-us\") so their histories never mix. Shown in every row as searchQuery.project.",
            "default": "default"
          },
          "maxConcurrency": {
            "title": "⚡ Parallel queries",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Queries searched at once.",
            "default": 5
          },
          "debugLog": {
            "title": "🐞 Debug log",
            "type": "boolean",
            "description": "Log every retry and save the HTML of every result page to the run key-value store.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}