{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Trends Scraper (fast, no browser)",
    "description": "Google Trends without a browser. Get interest over time, interest by region and related queries for many comparisons of up to 5 terms, in any geo, timeframe, category and property (web, news, images, YouTube, Shopping). Tidy rows, ready for CSV, BI and AI agents.",
    "version": "0.4",
    "x-build-id": "TYvaUc1Lf8dJgMsGT"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zovo-one~google-trends-scraper-fast/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zovo-one-google-trends-scraper-fast",
        "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/zovo-one~google-trends-scraper-fast/runs": {
      "post": {
        "operationId": "runs-sync-zovo-one-google-trends-scraper-fast",
        "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/zovo-one~google-trends-scraper-fast/run-sync": {
      "post": {
        "operationId": "run-sync-zovo-one-google-trends-scraper-fast",
        "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": {
          "searchTerms": {
            "title": "Search terms (one comparison per line)",
            "type": "array",
            "description": "One comparison per line. Put up to 5 terms on one line, separated by commas, to compare them on the same 0-100 scale like on the Google Trends website, for example \"coffee, tea\". A line with one term is its own comparison. Google topic ids such as /m/02vqfm work too. Terms can't contain commas, and a line can have at most 1,000 characters. You pay $0.001 per term that returns data, so the prefilled line costs $0.002.",
            "default": [
              "coffee, tea"
            ],
            "items": {
              "type": "string"
            }
          },
          "trendsUrls": {
            "title": "Google Trends URLs (optional)",
            "type": "array",
            "description": "Optional. Paste explore URLs from trends.google.com, for example https://trends.google.com/trends/explore?q=coffee,tea&geo=US&date=today%205-y. Each URL is one comparison and keeps its own terms, geo, date, category and property; the fields below don't change URLs. The same term may appear twice with different geos (q=coffee,coffee&geo=US,GB). Missing URL parameters use Google's defaults: worldwide, past 12 months, all categories, web search. Not supported: different date ranges per term (date=A,B; paste one URL per date range instead), hourly custom ranges (date=2024-01-01T00 2024-01-07T00) and date=all_2008. A URL that can't be read fails on its own, isn't charged, and the rest of the run continues.",
            "items": {
              "type": "string"
            }
          },
          "geos": {
            "title": "Geos",
            "type": "array",
            "description": "Where to run every comparison. Use a 2-letter country code (US, DE, JP; GB, not UK), a subregion (US-CA, GB-ENG), a US metro (US-CA-807) or \"worldwide\". Leave empty or use \"worldwide\" for worldwide. An API call that leaves out geos gets the default, US. Each geo repeats every line, so 3 lines in 2 geos make 6 comparisons. Unknown country codes are rejected before any request. Subregion and metro codes are only checked for format, and Google rejects unknown ones (only that comparison fails).",
            "default": [
              "US"
            ],
            "items": {
              "type": "string"
            }
          },
          "timeframe": {
            "title": "Timeframe",
            "enum": [
              "now 1-H",
              "now 4-H",
              "now 1-d",
              "now 7-d",
              "today 1-m",
              "today 3-m",
              "today 12-m",
              "today 5-y",
              "all"
            ],
            "type": "string",
            "description": "Preset time range. Google picks the time step from the range: minutes or hours for short ranges, days up to 90 days, weeks up to 5 years, months for longer ranges. Custom time range below overrides this.",
            "default": "today 12-m"
          },
          "customTimeRange": {
            "title": "Custom time range",
            "pattern": "^(|\\s*\\d{4}-\\d{2}-\\d{2}\\s+(to\\s+)?\\d{4}-\\d{2}-\\d{2}\\s*)$",
            "type": "string",
            "description": "Optional. Overrides Timeframe. Format YYYY-MM-DD YYYY-MM-DD, for example 2024-01-01 2024-12-31. The earliest start is 2004-01-01 and the end can't be in the future."
          },
          "category": {
            "title": "Category",
            "enum": [
              "0",
              "3",
              "47",
              "44",
              "22",
              "12",
              "5",
              "7",
              "71",
              "8",
              "45",
              "65",
              "11",
              "13",
              "958",
              "19",
              "16",
              "299",
              "14",
              "66",
              "29",
              "533",
              "174",
              "18",
              "20",
              "67"
            ],
            "type": "string",
            "description": "Limit the data to one Google Trends category. All categories is what the website shows by default. For a subcategory, use Custom category id below.",
            "default": "0"
          },
          "customCategoryId": {
            "title": "Custom category id",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Any Google Trends category id, for example 174 (Science) or a subcategory id from the cat= parameter of a Google Trends URL. Overrides Category."
          },
          "property": {
            "title": "Google property",
            "enum": [
              "web",
              "news",
              "images",
              "youtube",
              "froogle"
            ],
            "type": "string",
            "description": "Which Google search the interest data comes from: web search (default), news, images, YouTube or Google Shopping.",
            "default": "web"
          },
          "interestOverTime": {
            "title": "Interest over time",
            "type": "boolean",
            "description": "One row per term and time point, 0-100. Values are relative to the highest point among all terms of the comparison. Same price whether on or off.",
            "default": true
          },
          "interestByRegion": {
            "title": "Interest by region",
            "type": "boolean",
            "description": "One row per term and region (countries for worldwide, subregions for a country). Regions with too little search volume are left out, as on the website. In a comparison of 2 or more terms, each row also has comparisonShare, the term's share of the compared terms' searches in that region.",
            "default": true
          },
          "relatedQueriesTop": {
            "title": "Related queries: top",
            "type": "boolean",
            "description": "Up to 25 top related queries per term (the most searched queries related to the term). Each row has mentionsTerm (true when the query contains every word of the term with 3 or more letters, plural s or es allowed; null for topic ids), so you can drop generic entries such as \"travel\" for coffee.",
            "default": true
          },
          "relatedQueriesRising": {
            "title": "Related queries: rising",
            "type": "boolean",
            "description": "Up to 25 rising related queries per term (biggest growth). Off by default: Google labels automated requests USER_TYPE_SCRAPER, and in our tests (2026-11-05) most rising queries were unrelated filler, for example 38 of 50 for \"coffee, tea\" (\"top songs this week\", \"sports scores today\"). Turn it on only if you filter with mentionsTerm. It needs no extra request and adds no charge (you pay per term, not per row).",
            "default": false
          },
          "relatedTopics": {
            "title": "Related topics (top + rising)",
            "type": "boolean",
            "description": "Up to 25 top and 25 rising related topics per term. Experimental and off by default: in our tests (2026-11-05) Google returned empty related-topic lists to automated requests every time (7 of 7), so this mostly adds requests. Empty lists add no rows and no charge. Google shows related topics only for single terms, so a comparison of N terms needs N extra requests.",
            "default": false
          },
          "includeRawResponses": {
            "title": "Save raw Google responses",
            "type": "boolean",
            "description": "Also save Google's raw JSON for each comparison in the key-value store (records RAW-c1, RAW-c2, ...). Not charged and not in the dataset.",
            "default": false
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Google Trends interface language (hl), for example en-US, de, pt-BR, es-419. Changes region names and topic titles, not the numbers.",
            "default": "en-US"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify Proxy is on by default (datacenter). Google rate-limits busy datacenter IPs (HTTP 429). The Actor retries with a fresh cookie and a new proxy IP, but if many requests fail, select the RESIDENTIAL group (costs more per GB).",
            "default": {
              "useApifyProxy": true
            }
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 3,
            "type": "integer",
            "description": "Comparisons processed in parallel. Higher values are faster but trigger Google's rate limit sooner. Use 2-3 only with the RESIDENTIAL proxy.",
            "default": 1
          },
          "maxRetries": {
            "title": "Max retries per request",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How often one request is retried after HTTP 429, 403, 5xx, a network error or a timeout. Waits between attempts grow exponentially with random jitter: about 1-2 s, 2-4 s, 4-8 s, 8-16 s, then 15-30 s (or Google's Retry-After, capped at 30 s). The first 429 of a request that sets a new NID cookie is retried after 1-2 s with that cookie (once per request).",
            "default": 5
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}