{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Search Results Scraper",
    "description": "Google Search Results Scraper extracts structured data from Google search pages in real time. Collect titles, URLs, snippets, rankings, ads, and related queries in JSON or CSV. Ideal for SEO tracking, competitor research, and keyword performance analysis.",
    "version": "0.1",
    "x-build-id": "Qn4sudBxqwJhjy0tl"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scraper-engine~google-search-results-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scraper-engine-google-search-results-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/scraper-engine~google-search-results-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scraper-engine-google-search-results-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/scraper-engine~google-search-results-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scraper-engine-google-search-results-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",
        "required": [
          "queries"
        ],
        "properties": {
          "queries": {
            "title": "🔍 Search term(s)",
            "type": "string",
            "description": "Use regular search words or enter Google Search URLs. You can also apply advanced Google search techniques, such as AI site:twitter.com or javascript OR python. You can also define selected search filters as separate fields below (in the Advanced search filters section). Just ensure that your queries do not exceed 32 words to comply with Google Search limits."
          },
          "resultsPerPage": {
            "title": "📊 Results per page",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Passed to Google Search as the num parameter, but Google ignores it for a logged-out HTML fetch and returns about 10 organic results per page regardless of this value. Use maxPagesPerQuery to get more results — pagination now advances by however many distinct results were actually collected so far, not by this field's value, so no results are skipped between pages. To potentially retrieve more results closer to your desired count on a given page, consider enabling the \"Unfiltered results\" option from the \"Additional settings\" section below, which includes results that Google normally filters out.",
            "default": 100
          },
          "maxPagesPerQuery": {
            "title": "📄 Max pages per search",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of pages to scrape per search query. Each page contains approximately 10 results.",
            "default": 1
          },
          "aiMode": {
            "title": "⏩ Add-on: Google AI Mode ($)",
            "enum": [
              "aiModeOff",
              "aiModeWithSearchResults",
              "aiModeOnly"
            ],
            "type": "string",
            "description": "Enable scraping of Google's AI Mode to perform Answer Engine Optimization (AEO), GEO targeting, track brand visibility, and analyze competitors.",
            "default": "aiModeOff"
          },
          "serpApiKey": {
            "title": "🔑 SerpApi key (for AI Overview)",
            "type": "string",
            "description": "Optional. When set and AI Mode is not off, fetches AI Overview via a real call to serpapi.com/search. Requires a valid, paid SerpApi key (https://serpapi.com) — without one, or when this field is left empty, aiOverview stays null rather than being guessed or filled with placeholder text."
          },
          "perplexitySearch": {
            "title": "⏩ Add-on: Perplexity AI search ($)",
            "type": "object",
            "description": "Captures your Perplexity-related preferences and echoes them back on every output row under customData.perplexitySearch. Honest note: this Actor does not hold Perplexity API credentials and does not itself call the Perplexity Sonar model — no separate input field exists here for a Perplexity API key. Use these values to drive your own downstream Perplexity call, or wire in a Perplexity API key elsewhere in your pipeline.",
            "properties": {
              "enablePerplexity": {
                "title": "✨ Enable Perplexity AI",
                "type": "boolean",
                "description": "Fetch AI answer using Perplexity Sonar model.",
                "default": false
              },
              "searchRecency": {
                "title": "🔍 Search Recency",
                "type": "string",
                "description": "Specify the time range for Perplexity search results.",
                "editor": "select",
                "nullable": true,
                "enum": [
                  "",
                  "day",
                  "week",
                  "month",
                  "year"
                ],
                "enumTitles": [
                  "None",
                  "day",
                  "week",
                  "month",
                  "year"
                ]
              },
              "returnImages": {
                "title": "🖼️ Include images in Perplexity AI answers",
                "type": "boolean",
                "description": "Include images in Perplexity response.",
                "default": false
              },
              "returnRelatedQuestions": {
                "title": "❓ Include related questions in Perplexity AI answers",
                "type": "boolean",
                "description": "Include related questions in Perplexity response.",
                "default": false
              }
            },
            "default": {
              "enablePerplexity": false,
              "searchRecency": "",
              "returnImages": false,
              "returnRelatedQuestions": false
            }
          },
          "chatGptSearch": {
            "title": "⏩ Add-on: ChatGPT Search ($)",
            "type": "object",
            "description": "Captures your ChatGPT-related preference and echoes it back on every output row under customData.chatGptSearch. Honest note: this Actor does not hold an OpenAI API key and does not itself call any OpenAI search model — no separate input field exists here for one. Use this value to drive your own downstream ChatGPT call.",
            "properties": {
              "enableChatGpt": {
                "title": "💬 Enable ChatGPT search",
                "type": "boolean",
                "description": "Fetch AI answer using OpenAI search model.",
                "default": false
              }
            },
            "default": {
              "enableChatGpt": false
            }
          },
          "maximumLeadsEnrichmentRecords": {
            "title": "⏩ Add-on: Extract Business Leads Information - Maximum leads per domain ($)",
            "minimum": 0,
            "type": "integer",
            "description": "Honest note: this Actor performs no lead-enrichment scraping today — there is no employee/email/phone/LinkedIn extraction code in it. Setting this value only stores your intended per-domain cap and echoes it back on every output row under customData.maximumLeadsEnrichmentRecords, for you to feed into your own enrichment step. It never triggers a request and nothing is charged for it. Default 0 (no cap set).",
            "default": 0
          },
          "leadsEnrichmentDepartments": {
            "title": "🏢 Leads departments selection",
            "type": "array",
            "description": "Honest note: this Actor performs no lead-enrichment scraping today, so there is no department data to filter. Your selection is only stored and echoed back on every output row under customData.leadsEnrichmentDepartments, for you to feed into your own enrichment step.",
            "items": {
              "type": "string",
              "enum": [
                "c-suite",
                "product",
                "engineering-technical",
                "design",
                "education",
                "finance",
                "human-resources",
                "information-technology",
                "legal",
                "marketing",
                "medical-health",
                "operations",
                "sales",
                "consulting"
              ],
              "enumTitles": [
                "C-Suite",
                "Product",
                "Engineering & Technical",
                "Design",
                "Education",
                "Finance",
                "Human Resources",
                "Information Technology",
                "Legal",
                "Marketing",
                "Medical & Health",
                "Operations",
                "Sales",
                "Consulting"
              ]
            },
            "default": []
          },
          "focusOnPaidAds": {
            "title": "⏩ Add-on: Enable paid results (ads) extraction ($)",
            "type": "boolean",
            "description": "Enable extraction of paid results (Google Ads). When on, and a fetched page shows neither ads nor shopping products, the Actor re-fetches that same page up to 3 times before giving up, on the chance Google simply didn't serve ads on that attempt. It uses the same proxy as the rest of the run — there is no separate ad-specialized proxy. Best used for queries likely to show ads.",
            "default": false
          },
          "countryCode": {
            "title": "🌍 Country",
            "enum": [
              "af",
              "al",
              "dz",
              "as",
              "ad",
              "ao",
              "ai",
              "aq",
              "ag",
              "ar",
              "am",
              "aw",
              "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",
              "ky",
              "cf",
              "td",
              "cl",
              "cn",
              "cx",
              "cc",
              "co",
              "km",
              "cg",
              "cd",
              "ck",
              "cr",
              "ci",
              "hr",
              "cu",
              "cy",
              "cz",
              "dk",
              "dj",
              "dm",
              "do",
              "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",
              "va",
              "hn",
              "hk",
              "hu",
              "is",
              "in",
              "id",
              "ir",
              "iq",
              "ie",
              "il",
              "it",
              "jm",
              "jp",
              "jo",
              "kz",
              "ke",
              "ki",
              "kp",
              "kr",
              "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",
              "mm",
              "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",
              "sh",
              "kn",
              "lc",
              "pm",
              "vc",
              "ws",
              "sm",
              "st",
              "sa",
              "sn",
              "cs",
              "sc",
              "sl",
              "sg",
              "sk",
              "si",
              "sb",
              "so",
              "za",
              "gs",
              "es",
              "lk",
              "sd",
              "sr",
              "sj",
              "sz",
              "se",
              "ch",
              "sy",
              "tw",
              "tj",
              "tz",
              "th",
              "tl",
              "tg",
              "tk",
              "to",
              "tt",
              "tn",
              "tr",
              "tm",
              "tc",
              "tv",
              "ug",
              "ua",
              "ae",
              "gb",
              "us",
              "um",
              "uy",
              "uz",
              "vu",
              "ve",
              "vn",
              "vg",
              "vi",
              "wf",
              "eh",
              "ye",
              "zm",
              "zw"
            ],
            "type": "string",
            "description": "Specifies the country used for the search and the Google Search domain (e.g. google.es for Spain). By default, the Actor uses United States (google.com).",
            "default": "us"
          },
          "searchLanguage": {
            "title": "🔤 Search language",
            "enum": [
              "",
              "ar",
              "bg",
              "ca",
              "cs",
              "da",
              "de",
              "el",
              "en",
              "es",
              "et",
              "fi",
              "fr",
              "hr",
              "hu",
              "id",
              "is",
              "it",
              "iw",
              "ja",
              "ko",
              "lt",
              "lv",
              "nl",
              "no",
              "pl",
              "pt",
              "ro",
              "ru",
              "sk",
              "sl",
              "sr",
              "sv",
              "tr",
              "zh-CN",
              "zh-TW"
            ],
            "type": "string",
            "description": "Restricts search results to pages in a specific language. For example, choosing 'German' results in pages only in German. Passed to Google Search as the lr URL query parameter. Read more here."
          },
          "languageCode": {
            "title": "🌐 Interface Language",
            "enum": [
              "af",
              "sq",
              "sm",
              "ar",
              "az",
              "eu",
              "be",
              "bn",
              "bh",
              "bs",
              "bg",
              "ca",
              "zh-CN",
              "zh-TW",
              "hr",
              "cs",
              "da",
              "nl",
              "en",
              "eo",
              "et",
              "fo",
              "fi",
              "fr",
              "fy",
              "gl",
              "ka",
              "de",
              "el",
              "gu",
              "iw",
              "hi",
              "hu",
              "is",
              "id",
              "ia",
              "ga",
              "it",
              "ja",
              "jw",
              "kn",
              "ko",
              "la",
              "lv",
              "lt",
              "mk",
              "ms",
              "ml",
              "mt",
              "mr",
              "ne",
              "no",
              "nn",
              "oc",
              "fa",
              "pl",
              "pt-BR",
              "pt-PT",
              "pa",
              "ro",
              "ru",
              "gd",
              "sr",
              "si",
              "sk",
              "sl",
              "es",
              "su",
              "sw",
              "sv",
              "tl",
              "ta",
              "te",
              "th",
              "ti",
              "tr",
              "uk",
              "ur",
              "uz",
              "vi",
              "cy",
              "xh",
              "zu"
            ],
            "type": "string",
            "description": "Language of the Google Search interface (menus, buttons, etc. - not the search results themselves). Passed to Google Search as the hl URL query parameter. From Google Reference: You can use the hl request parameter to identify the language of your graphical interface. The hl parameter value may affect search results, especially on international queries when language restriction (using the lr parameter) is not explicitly specified. Read more here.",
            "default": "en"
          },
          "locationUule": {
            "title": "📍 Exact location (Google UULE parameter)",
            "type": "string",
            "description": "The code for the exact location for the Google search. It's passed to Google Search as the uule URL query parameter. You can use the UULE code generator. Learn more about emulating local search."
          },
          "forceExactMatch": {
            "title": "🎯 Force exact match",
            "type": "boolean",
            "description": "If checked, the scraper will search for the exact phrase in the query. This is done by wrapping the query in quotes. Note that this may return fewer results. Also note that if you're using operators such as OR or AND, the whole query will be wrapped in quotes, such as \"Windows AND macOS\". If you want to search for queries such as \"Windows\" AND \"macOS\", you need to specify them directly in the queries field.",
            "default": false
          },
          "site": {
            "title": "🌐 Site",
            "type": "string",
            "description": "Limits the search to a specific site, such as: site:example.com. Note that the site filter takes precedence over the relatedToSite filter. If both filters are set, the relatedToSite filter will be ignored and not added to the search queries."
          },
          "relatedToSite": {
            "title": "🔗 Related to site",
            "type": "string",
            "description": "Filters pages related to a specific site, such as: related:example.com. Note that the site filter takes precedence over the relatedToSite filter. If both filters are set, the relatedToSite filter will be ignored and not added to the search queries."
          },
          "wordsInTitle": {
            "title": "📝 Words in title",
            "maxItems": 32,
            "type": "array",
            "description": "Filters pages with specific words in the title. The scraper uses the intitle: operator, even for multiple words (e.g. recipe site:allrecipes.com intitle:\"easy apple\" intitle:pie). There's also a allintitle: operator available, but it's problematic when combined with other search filters, so the scraper avoids using it. If you need to use the allintitle: operator specifically, you can include it in your custom queries from the queries field.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "wordsInText": {
            "title": "📄 Words in text",
            "maxItems": 32,
            "type": "array",
            "description": "Filters pages with specific words in the text. The scraper uses the intext: operator, even for multiple words (e.g. cartoon site:wikipedia.com intext:cat intext:mouse). There's also a allintext: operator available, but it's problematic when combined with other search filters, so the scraper avoids using it. If you need to use the allintext: operator specifically, you can include it in your custom queries from the queries field.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "wordsInUrl": {
            "title": "🔗 Words in URL",
            "maxItems": 32,
            "type": "array",
            "description": "Filters pages with specific words in the URL. The scraper uses the inurl: operator, even for multiple words (e.g. recipe site:allrecipes.com inurl:apple inurl:pie). There's also a allinurl: operator available, but it's problematic when combined with other search filters, so the scraper avoids using it. If you need to use the allinurl: operator specifically, you can include it in your custom queries from the queries field.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "quickDateRange": {
            "title": "⏱️ Quick date range",
            "type": "string",
            "description": "Filters results from a specific date range. d[number] specifies the number of past days (e.g. the past 10 days can be written as d10). The same applies to hours, weeks, months, and years: h[number], w[number], m[number], y[number]. Example for the past year: 'y1' or even 'y'. The value is passed to Google Search using the tbs URL query parameter, prefixed with qdr:. You should avoid combining this filter with the beforeDate and afterDate filters to prevent conflicts."
          },
          "beforeDate": {
            "title": "📅 Before date",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "Filters results from before the specified date. Either absolute date (e.g. 2024-05-03) or relative date from now into the past (e.g. 8 days, 3 months). Absolute time is always interpreted in the UTC timezone, not your local timezone - please convert accordingly. Supported relative date & time units: days, weeks, months, years. You should avoid combining this filter with the quickDateRange filter to prevent conflicts."
          },
          "afterDate": {
            "title": "📆 After date",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "Filters results from after the specified date. Either absolute date (e.g. 2024-05-03) or relative date from now into the past (e.g. 8 days, 3 months). Absolute time is always interpreted in the UTC timezone, not your local timezone - please convert accordingly. Supported relative date & time units: days, weeks, months, years. You should avoid combining this filter with the quickDateRange filter to prevent conflicts."
          },
          "fileTypes": {
            "title": "📎 File types",
            "maxItems": 10,
            "type": "array",
            "description": "Filters results of specific file types using the filetype: operator, such as filetype:pdf. You can select multiple file types as well. They will be combined with the OR operator, for example: filetype:doc OR filetype:txt. If you need to use a file type that is not in the list (such as a source code file type), you can include it in your custom queries from the queries field, using the filetype: operator.",
            "items": {
              "type": "string",
              "enum": [
                "pdf",
                "csv",
                "epub",
                "ps",
                "htm",
                "html",
                "xls",
                "xlsx",
                "ppt",
                "pptx",
                "doc",
                "docx",
                "odp",
                "ods",
                "odt",
                "rtf",
                "svg",
                "tex",
                "txt",
                "wml",
                "wap",
                "xml",
                "xps",
                "md",
                "readme",
                "log",
                "yml",
                "yaml",
                "toml",
                "ipynb",
                "sas",
                "sql",
                "rdf",
                "avif",
                "avi",
                "mkv",
                "mov",
                "flv",
                "asf",
                "ogv"
              ],
              "enumTitles": [
                "Adobe Portable Document Format (pdf)",
                "Comma-Separated Values (csv)",
                "Electronic Publication (epub)",
                "Adobe PostScript (ps)",
                "HTML (htm)",
                "HTML (html)",
                "Microsoft Excel (xls)",
                "Microsoft Excel (xlsx)",
                "Microsoft PowerPoint (ppt)",
                "Microsoft PowerPoint (pptx)",
                "Microsoft Word (doc)",
                "Microsoft Word (docx)",
                "OpenOffice presentation (odp)",
                "OpenOffice spreadsheet (ods)",
                "OpenOffice text (odt)",
                "Rich Text Format (rtf)",
                "Scalable Vector Graphics (svg)",
                "TeX/LaTeX (tex)",
                "Text (txt)",
                "Wireless Markup Language (wml)",
                "Wireless Markup Language (wap)",
                "XML (xml)",
                "XML Paper Specification (xps)",
                "Markdown (md)",
                "Readme (readme)",
                "Log file (log)",
                "YAML (yml)",
                "YAML (yaml)",
                "TOML (toml)",
                "Jupyter Notebook (ipynb)",
                "SAS (sas)",
                "SQL (sql)",
                "Resource Description Framework (rdf)",
                "AV1 Image File Format (avif)",
                "Audio Video Interleave (avi)",
                "Matroska Multimedia Container (mkv)",
                "QuickTime Movie (mov)",
                "Flash Video (flv)",
                "Advanced Systems Format (asf)",
                "Ogg Video (ogv)"
              ]
            },
            "default": []
          },
          "mobileResults": {
            "title": "📱 Mobile results",
            "type": "boolean",
            "description": "If checked, the scraper sends Google a mobile browser's User-Agent (Android GSA / Chrome) instead of a desktop one, and searchQuery.device on every output row is set to MOBILE so you can tell which mode a row came from. Google mostly detects device type from the User-Agent alone for a logged-out HTML fetch, so parsed content is otherwise the same shape as a desktop run.",
            "default": false
          },
          "includeUnfilteredResults": {
            "title": "🔓 Unfiltered results",
            "type": "boolean",
            "description": "If checked the lower quality results that Google normally filters out will be included.",
            "default": false
          },
          "saveHtml": {
            "title": "💾 Save HTML to dataset",
            "type": "boolean",
            "description": "If checked the HTML of the Google Search results pages will be stored to the default dataset, under the html property. This is useful if you need to process the HTML, but it makes the dataset large.",
            "default": false
          },
          "saveHtmlToKeyValueStore": {
            "title": "🗄️ Save HTML to key-value store",
            "type": "boolean",
            "description": "If checked the HTML of the Google Search results pages will be stored to the default key-value store and links to the files stored to the dataset under the htmlSnapshotUrl property. This is useful for debugging since you can easily view the pages in the browser. However, the use of this feature may slow down the Actor.",
            "default": true
          },
          "includeIcons": {
            "title": "🖼️ Include icon image data (base64)",
            "type": "boolean",
            "description": "If checked, all of the results (organicResults, paidResults, suggestedResults) will contain Base64-encoded icon image data if found.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "🔒 Proxy configuration",
            "type": "object",
            "description": "This actor always uses proxies to maximize success rates. By default, it starts with a Google SERP proxy and falls back to residential proxy (with 3 retries) if blocked. Once a residential proxy is used, it will stick to it for all subsequent requests."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}