{"components":{"responses":{"Error":{"content":{"application/json":{"schema":{"properties":{"error":{"properties":{"code":{"type":"string"},"message":{"type":"string"}},"type":"object"}},"type":"object"}}},"description":"Error"}},"securitySchemes":{"bearer":{"description":"t2_live_… or t2_test_… key from https://app.t2ind.com","scheme":"bearer","type":"http"}}},"info":{"contact":{"email":"data@t2ind.com","url":"https://t2ind.com/contact"},"description":"Search, page text, domain intelligence and change feeds from T2's own crawl of the public web.\n\nAuthenticate with `Authorization: Bearer t2_live_…` (keys at https://app.t2ind.com). Every call costs credits; responses carry `X-Credits-Charged` and `X-Credits-Remaining`. Errors are `{\"error\":{\"code\",\"message\"}}`.\n\nData from T2 may not be used to train AI models (see https://t2ind.com/terms).","termsOfService":"https://t2ind.com/terms","title":"T2 Industries API","version":"1.0.0"},"openapi":"3.1.0","paths":{"/v1/categories":{"post":{"description":"**Credits:** 1 per domain found (unknown domains are free and queued).","requestBody":{"content":{"application/json":{"schema":{"properties":{"domains":{"items":{"type":"string"},"maxItems":1000,"type":"array"}},"required":["domains"],"type":"object"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"$ref":"#/components/responses/Error"}},"summary":"Categorise up to 1,000 domains","tags":["Domains"]}},"/v1/category/{domain}":{"get":{"description":"Categories with confidence. See /v1/taxonomy.\n\n**Credits:** 1","parameters":[{"description":"Domain","in":"path","name":"domain","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"summary":"Category of one domain","tags":["Domains"]}},"/v1/changes":{"get":{"description":"Pages that materially changed (`material`) and sites that stopped answering for 30 days (`went_dark`). Page through with `cursor`; filter by `domain` (includes subdomains) or `category`.\n\n**Credits:** 1 per 100 rows returned (minimum 1)","parameters":[{"description":"next_cursor from the previous page","in":"query","name":"cursor","required":false,"schema":{"type":"integer"}},{"description":"Start time when no cursor (max 30 days, default 1h)","in":"query","name":"since","required":false,"schema":{"examples":["2026-10-27T00:00:00Z","6h","2d"],"type":"string"}},{"description":"material, went_dark (comma separated)","in":"query","name":"kind","required":false,"schema":{"type":"string"}},{"description":"Only this domain and its subdomains","in":"query","name":"domain","required":false,"schema":{"type":"string"}},{"description":"Only hosts in these categories (comma separated)","in":"query","name":"category","required":false,"schema":{"type":"string"}},{"description":"1-1000","in":"query","name":"limit","required":false,"schema":{"default":100,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"summary":"Change feed","tags":["Feeds"]}},"/v1/enrich/{domain}":{"get":{"description":"Title, description, categories, technologies, published business contact details, popularity, security headers, robots.txt policy, first/last seen. Unknown domains are queued for crawling.\n\n**Credits:** 2","parameters":[{"description":"Domain, e.g. example.com","in":"path","name":"domain","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"summary":"Domain profile","tags":["Domains"]}},"/v1/history":{"get":{"description":"Every stored version of a page (each one is a content change T2 observed).\n\n**Credits:** 2","parameters":[{"description":"Absolute URL","in":"query","name":"url","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"summary":"Page versions","tags":["Pages"]}},"/v1/history/diff":{"get":{"description":"Unified text diff between two stored versions (defaults: the last two).\n\n**Credits:** 3","parameters":[{"description":"Absolute URL","in":"query","name":"url","required":true,"schema":{"type":"string"}},{"description":"Version index","in":"query","name":"from","required":false,"schema":{"type":"integer"}},{"description":"Version index","in":"query","name":"to","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"summary":"Diff two versions","tags":["Pages"]}},"/v1/new-domains":{"get":{"description":"Registrable domains seen for the first time in certificate-transparency logs.\n\n**Credits:** 1 per 100 rows returned (minimum 1)","parameters":[{"description":"Default 24h, max 30 days","in":"query","name":"since","required":false,"schema":{"examples":["2026-10-27T00:00:00Z","6h","2d"],"type":"string"}},{"description":"next_cursor from the previous page","in":"query","name":"cursor","required":false,"schema":{"type":"string"}},{"description":"Substring (3+ chars), e.g. a brand name","in":"query","name":"contains","required":false,"schema":{"type":"string"}},{"description":"e.g. com","in":"query","name":"tld","required":false,"schema":{"type":"string"}},{"description":"1-1000","in":"query","name":"limit","required":false,"schema":{"default":100,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"summary":"New domains","tags":["Feeds"]}},"/v1/page":{"get":{"description":"Stored clean text of one URL with title, headings, language and version count.\n\n**Credits:** 2","parameters":[{"description":"Absolute URL","in":"query","name":"url","required":true,"schema":{"type":"string"}},{"description":"Outbound links","in":"query","name":"include_links","required":false,"schema":{"type":"boolean"}},{"description":"Structured data blocks","in":"query","name":"include_jsonld","required":false,"schema":{"type":"boolean"}},{"description":"Text length cap","in":"query","name":"max_chars","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"summary":"Page text","tags":["Pages"]}},"/v1/robots-stats":{"get":{"description":"Daily share of sites blocking each crawler, by popularity tier.\n\n**Credits:** 1","parameters":[{"description":"e.g. GPTBot","in":"query","name":"token","required":false,"schema":{"type":"string"}},{"description":"1-365","in":"query","name":"days","required":false,"schema":{"default":30,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"summary":"Crawler blocking statistics","tags":["Opt-Out Registry"]}},"/v1/robots/{domain}":{"get":{"description":"Allow/block at the site root for each tracked crawler token, with change history.\n\n**Credits:** 1","parameters":[{"description":"Domain","in":"path","name":"domain","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"summary":"Crawler policy of a site","tags":["Opt-Out Registry"]}},"/v1/search":{"get":{"description":"BM25 full-text search over T2's index, re-ranked by site popularity. Adult sites are excluded unless `safe=false`.\n\n**Credits:** 4 per call, 8 with `include_text`","parameters":[{"description":"Query. `site:example.com` restricts to one site.","in":"query","name":"q","required":true,"schema":{"type":"string"}},{"description":"1-50","in":"query","name":"limit","required":false,"schema":{"default":10,"type":"integer"}},{"description":"0-200","in":"query","name":"offset","required":false,"schema":{"default":0,"type":"integer"}},{"description":"Two-letter language code","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"Only pages fetched since","in":"query","name":"since","required":false,"schema":{"examples":["2026-10-27T00:00:00Z","6h","2d"],"type":"string"}},{"description":"Return clean page text","in":"query","name":"include_text","required":false,"schema":{"type":"boolean"}},{"description":"Text length cap (500-200000)","in":"query","name":"max_chars","required":false,"schema":{"default":20000,"type":"integer"}},{"description":"Exclude adult sites","in":"query","name":"safe","required":false,"schema":{"default":true,"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"OK"},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"402":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}},"summary":"Search the web","tags":["Search"]}},"/v1/taxonomy":{"get":{"responses":{"200":{"description":"OK"}},"security":[],"summary":"Category ids","tags":["Domains"]}},"/v1/usage":{"get":{"description":"**Credits:** free","responses":{"200":{"description":"OK"}},"summary":"Plan and credits","tags":["Account"]}}},"security":[{"bearer":[]}],"servers":[{"url":"https://api.t2ind.com"}],"tags":[{"name":"Search"},{"name":"Pages"},{"name":"Domains"},{"name":"Feeds"},{"name":"Opt-Out Registry"},{"name":"Account"}]}