import { CookiesCache } from './agent/cookies/common'; import { ProxyConfig } from './agent/useProxyIfPossible'; export declare const GOOGLE_TRENDS_API_HOST = "https://trends.google.com"; export interface RequestsCache { set: (key: string, value: Promise) => Promise; get: (key: string) => Promise; } /** * agent options control how you are seen when sending your requests * * relevance * - google tracks each agent (ip, useragent, cookies) and associates a rate limit for each agent * - based on your agent's appearance, you may be assigned a bigger or smaller rate limit (cookies, useragent) * - you may change your agent to look like a completely new user (proxies) */ export interface AgentOptions { /** * the user agent is sent as a header on requests to the origin * * relevance * - it is possible that rate limiting is more stringent on unnatural user agents * - if you are being throttled, you may consider setting this to a natural value */ userAgent?: string; /** * the cookie cache is used to receive and send cookies across requests * * relevance * - google domains try to assign a cookie to every user that visits their website * - anecdotal evidence shows that these cookies make agents look more natural, and lessen rate limiting restrictions * * note * - you will want your cookie cache to persist the cookies to disk or database, so that they are not lost when the in-memory data clears * * for example * - https://github.com/uladkasach/simple-on-disk-cache - supports local and s3 caching */ cookieCache?: CookiesCache; /** * a proxy can be used to change the ip address that the origin sees from your request * * relevance * - if you use a new ip, you will be seen as a new user, resetting your rate limiting counter * * note * - if you are also using cookie cache (recommended) you will need to clear your cache any time you change your ip. * - otherwise, the cookie will identify you */ proxyConfig?: ProxyConfig; /** * the request cache is used to prevent sending duplicate requests to goole * * relevance * - google will rate limit the number of requests you make * - dont send duplicate requests, to maximize how much value you get from the requests you're allocated * * note * - you will want your requests cache to persist the responses to disk or database, so that they are not lost when the in-memory data clears * * for example * - https://github.com/uladkasach/simple-on-disk-cache - supports local and s3 caching */ requestCache?: RequestsCache; } export interface GoogleTrendsApiTopic { /** * for example * - "/m/03dg8j" */ mid: string; /** * for example: * - "title":"Mattress" */ title: string; /** * for example: * - "type":"Topic" * - "type":"Outlet store company" */ type: string; }