{
  "openapi": "3.0.1",
  "info": {
    "title": "Google AI Overview Scraper – GEO - Sources & Citations",
    "description": "Scrape Google AI Overviews and AI Mode answers at scale. Extract the full AI summary, cited sources and domains for any keyword — built for GEO & SEO monitoring.\n\nBenefits:\n- Real time results (no cached SERP results)\n- If automated AI summary is missing - the \"AI mode\" is clicked and analysed",
    "version": "0.1",
    "x-build-id": "ZEEVyCFSI5j35MH0b"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automation_nerd~google-ai-overview-actor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automation_nerd-google-ai-overview-actor",
        "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/automation_nerd~google-ai-overview-actor/runs": {
      "post": {
        "operationId": "runs-sync-automation_nerd-google-ai-overview-actor",
        "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/automation_nerd~google-ai-overview-actor/run-sync": {
      "post": {
        "operationId": "run-sync-automation_nerd-google-ai-overview-actor",
        "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",
        "required": [
          "prompts"
        ],
        "properties": {
          "prompts": {
            "title": "Prompts (search queries)",
            "type": "array",
            "description": "Google search queries to analyze for AI Overview answers",
            "default": [
              "how does photosynthesis work"
            ],
            "items": {
              "type": "string"
            }
          },
          "languageCode": {
            "title": "Language (hl)",
            "type": "string",
            "description": "Google UI language, passed as the `hl` parameter (e.g. en, de, fr). Affects which language the AI Overview is generated in.",
            "default": "en"
          },
          "countryCode": {
            "title": "Country (gl)",
            "type": "string",
            "description": "Country for search results, passed as the `gl` parameter (e.g. us, de, fr). Leave empty for automatic.",
            "default": ""
          },
          "aiModeFallback": {
            "title": "AI Mode fallback",
            "type": "boolean",
            "description": "If no AI Overview is shown on the default search results page, switch to Google's AI Mode tab and extract the answer from there. The output marks such results with answerSource = 'ai_mode'.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max concurrency (parallel prompts)",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many prompts to process in parallel. Higher = faster, but each parallel prompt uses ~1 GB RAM and its own residential IP. Increase the Actor's memory accordingly (about (N+1) GB for N parallel prompts). Total run cost stays roughly the same — you mostly save wall-clock time.",
            "default": 3
          },
          "maxRequestRetries": {
            "title": "Max retries per session",
            "minimum": 0,
            "maximum": 15,
            "type": "integer",
            "description": "How often to retry a browser session (a chunk of 'promptsPerSession' queries) that gets blocked/captcha'd. Each retry uses a fresh browser and a new residential IP; queries already answered in the session are skipped, so effectively the failing query gets retried on a new IP. The attempts made are reported per item as 'attempts'.",
            "default": 3
          },
          "promptsPerSession": {
            "title": "Prompts per browser session",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many search queries to run in one browser session before starting a fresh browser/IP. The risky moment is the cold start (fresh IP/browser); once past it, follow-up searches with a human-like pause behave like a normal user. A higher value also amortizes the cold start over more queries. A mid-session block safely retries only the remaining queries on a new IP. Default 5.",
            "default": 5
          },
          "blockResources": {
            "title": "Block images/fonts/media",
            "type": "boolean",
            "description": "Block images, fonts and media to reduce residential proxy traffic (the biggest cost driver). JavaScript, CSS and XHR are always kept, so AI Overview rendering and extraction are unaffected. Disable only if you suspect it affects results.",
            "default": true
          },
          "proxyCountry": {
            "title": "Proxy Country",
            "enum": [
              "",
              "US",
              "GB",
              "DE",
              "FR",
              "CA",
              "AU",
              "NL",
              "SE",
              "JP",
              "BR",
              "IN",
              "IT",
              "ES",
              "PL",
              "BE",
              "CH",
              "AT",
              "IE",
              "PT",
              "DK",
              "NO",
              "FI"
            ],
            "type": "string",
            "description": "Country the residential proxy should be located in. Leave empty (recommended) to automatically match the search country (the `gl` / Country field) — a proxy IP whose country matches the search is far less likely to be blocked. Falls back to US only when no search country is set. Override here to force a specific proxy country.",
            "default": ""
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}