BuiltWith knows what software a website is built on. Ask who uses React, Kubernetes or Salesforce and you get the companies that need people who know it. Point it at one company instead and you get their whole stack, which tells you whether your candidate fits.
BuiltWith pairs with GitHub on technical roles. One finds the companies on a stack, the other finds the engineers who know it.
a stack plus a live role beats either signal alone
the engineer side of the same technical signal
names inside the companies running that stack
score a long company list without reading it
Ask for the outcome and your agent composes the run itself. Or start from a skill, a whole pipeline it already knows end to end.
browse all skills →Every tool ships with a written playbook, and the agent loads it before the first call. Auth, rate limits, what each call costs, which actions need your approval, and the mistakes worth avoiding. It is the difference between an agent that knows the tool and one that guesses at it.
Read the BuiltWith docs →HOW in lib/builtwith.py. Index: reference/docs/builtwith/raw/endpoints.md.
https://api.builtwith.com · Auth: KEY query param (env BUILTWITH_API_KEY; auto-injected by the client; never hardcode).domain(lookup) — full tech profile of a site. lists(tech) / iter_lists(tech) — sites using a technology (the sourcing endpoint; paginated via OFFSET/NextOffset). company_to_url(company) — name→domain. trends(tech) — adoption over time. relationships(lookup), keywords(lookup), free(lookup) (light/safe pilot). Anything else → request().lists(tech) = source companies by stack — "who uses React / Kubernetes / Salesforce / Shopify" → those companies hire for that stack (IT-recruiting BD + candidate-company targeting). Heavy/credit-costly: pilot small, page with iter_lists(max_records=…).domain(domain) = qualify/enrich one company by tech — match a company's stack to a candidate's skills, or qualify an ICP by required tech (e.g. "uses Go + Kubernetes").company_to_url(name) resolves a sponsor/company to its domain before domain.Sourcing/qualification (IT): lists(tech) → companies on a stack → qualify vs ICP → find hiring managers (people-search) → enrich → outreach/ATS. Or enrich a known company's stack with domain to sharpen targeting. Pairs with [[github]] (the dev-side signal) for technical roles.
lib/builtwith.pyImport: from lib.builtwith import BuiltWith → instantiate BuiltWith() (reads key from env). Base: https://api.builtwith.com. Generic passthrough: request(method, path, *, params, json).
categories(**params) -> Any — GET /v22/api.json?CATEGORIES=1 — lookup table: the full list of every technologycompany_to_url(company: str, **params) -> Any — GET /ctu3/api.json?COMPANY={name} — resolve a company name → domain (feed domain).domain(lookup: str, **params) -> Any — GET /v22/api.json?LOOKUP={domain} — full tech profile of a domain (qualify/enrich by tech stack).free(lookup: str, **params) -> Any — GET /free1/api.json?LOOKUP={domain} — free-tier basic tech lookup (light; safe pilot).iter_lists(tech: str, *, max_records: int = 1000, **params) -> Iterator[dict] — Walk Lists API pages via NextOffset (bounded by max_records). Field/offset names follow thekeywords(lookup: str, **params) -> Any — GET /kw2/api.json?LOOKUP={domain} — keywords associated with a domain.lists(tech: str, **params) -> Any — GET /lists12/api.json?TECH={tech} — companies/sites using a technology (the sourcing endpoint).relationships(lookup: str, **params) -> Any — GET /rv4/api.json?LOOKUP={domain} — sites sharing relationships (shared trackers/IDs).trends(tech: str, **params) -> Any — GET /trends/v6/api.json?TECH={tech} — adoption trend (usage over time) for a technology.vector_search(query: str, *, limit: int = 10, **params) -> Any — GET /vector/v1/api.json?QUERY={text}&LIMIT={n} — semantic search over BuiltWith's