builtwith-api 3.2.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -15,7 +15,7 @@ var ResponseFormatSchema = z.enum(["xml", "json", "txt", "csv", "tsv"]);
15
15
  var ClientOptionsSchema = z.strictObject({
16
16
  responseFormat: ResponseFormatSchema.optional()
17
17
  });
18
- var dateRangePattern = /^\d{4}-\d{2}-\d{2}(-\d{4}-\d{2}-\d{2})?$/;
18
+ var dateRangePattern = /^\d{4}-\d{2}-\d{2}(\|\d{4}-\d{2}-\d{2})?$/;
19
19
  var DomainParamsSchema = z.strictObject({
20
20
  hideAll: z.boolean().optional(),
21
21
  hideDescriptionAndLinks: z.boolean().optional(),
@@ -23,8 +23,9 @@ var DomainParamsSchema = z.strictObject({
23
23
  noMetaData: z.boolean().optional(),
24
24
  noAttributeData: z.boolean().optional(),
25
25
  noPII: z.boolean().optional(),
26
- firstDetectedRange: z.string().regex(dateRangePattern, "Expected YYYY-MM-DD or YYYY-MM-DD-YYYY-MM-DD").optional(),
27
- lastDetectedRange: z.string().regex(dateRangePattern, "Expected YYYY-MM-DD or YYYY-MM-DD-YYYY-MM-DD").optional()
26
+ includeTrust: z.boolean().optional(),
27
+ firstDetectedRange: z.string().regex(dateRangePattern, "Expected YYYY-MM-DD or YYYY-MM-DD|YYYY-MM-DD").optional(),
28
+ lastDetectedRange: z.string().regex(dateRangePattern, "Expected YYYY-MM-DD or YYYY-MM-DD|YYYY-MM-DD").optional()
28
29
  });
29
30
  var ListsParamsSchema = z.strictObject({
30
31
  includeMetaData: z.boolean().optional(),
@@ -64,6 +65,7 @@ var FreeResponseSchema = z.strictObject({
64
65
  }))
65
66
  });
66
67
  var TechnologySchema = z.strictObject({
68
+ Id: z.number(),
67
69
  Name: z.string(),
68
70
  Description: z.string(),
69
71
  Link: z.string(),
@@ -84,8 +86,9 @@ var PathSchema = z.strictObject({
84
86
  });
85
87
  var MetaSchema = z.strictObject({
86
88
  Majestic: z.number(),
89
+ Umbrella: z.number().optional(),
87
90
  Vertical: z.string(),
88
- Social: z.array(z.string()),
91
+ Social: z.array(z.string()).optional(),
89
92
  CompanyName: z.string(),
90
93
  Telephones: z.array(z.string()),
91
94
  Emails: z.array(z.string()),
@@ -114,7 +117,22 @@ var AttributesSchema = z.strictObject({
114
117
  AdobeTags: z.number(),
115
118
  CDimensions: z.number(),
116
119
  CGoals: z.number(),
117
- CMetrics: z.number()
120
+ CMetrics: z.number(),
121
+ Followers: z.number().optional(),
122
+ Employees: z.number().optional(),
123
+ ProductCount: z.number().optional(),
124
+ Revenue: z.number().optional(),
125
+ PageRank: z.number().optional(),
126
+ BWRank: z.number().optional(),
127
+ Tranco: z.number().optional(),
128
+ BWS: z.number().optional(),
129
+ EcommerceCategory: z.number().optional(),
130
+ TTFB: z.number().optional(),
131
+ SourceBytes: z.number().optional(),
132
+ AIMaturity: z.number().optional(),
133
+ AIOpenness: z.number().optional(),
134
+ AIReadiness: z.number().optional(),
135
+ AIVisibility: z.number().optional()
118
136
  });
119
137
  var DomainResponseSchema = z.strictObject({
120
138
  Results: z.array(z.strictObject({
@@ -319,12 +337,23 @@ var validateLookup = (url, { multi = false } = {}) => {
319
337
  };
320
338
 
321
339
  // src/request.ts
340
+ import { z as z2 } from "zod/v4";
322
341
  var TEXT_FORMATS = [
323
342
  VALID_RESPONSE_TYPES.TXT,
324
343
  VALID_RESPONSE_TYPES.XML,
325
344
  VALID_RESPONSE_TYPES.CSV,
326
345
  VALID_RESPONSE_TYPES.TSV
327
346
  ];
347
+ var ApiErrorSchema = z2.object({
348
+ Errors: z2.array(z2.object({ Message: z2.string() }))
349
+ });
350
+ function checkForApiError(data) {
351
+ const parsed = ApiErrorSchema.safeParse(data);
352
+ if (parsed.success && parsed.data.Errors.length > 0) {
353
+ const messages = parsed.data.Errors.map((e) => e.Message).join("; ");
354
+ throw new Error(`BuiltWith API error: ${messages}`);
355
+ }
356
+ }
328
357
  var request = async (url, format, schema) => {
329
358
  const res = await fetch(url);
330
359
  if (!res.ok) {
@@ -334,7 +363,14 @@ var request = async (url, format, schema) => {
334
363
  if (TEXT_FORMATS.includes(format)) {
335
364
  return res.text();
336
365
  }
337
- const data = await res.json();
366
+ const raw = await res.text();
367
+ let data;
368
+ try {
369
+ data = JSON.parse(raw);
370
+ } catch {
371
+ throw new Error(`BuiltWith returned invalid JSON: ${raw.slice(0, 200)}`);
372
+ }
373
+ checkForApiError(data);
338
374
  return schema.parse(data);
339
375
  };
340
376
  var requestSafe = async (url, format, schema) => {
@@ -354,6 +390,7 @@ var requestSafe = async (url, format, schema) => {
354
390
  console.warn("BuiltWith sent an invalid JSON payload. Falling back to text parsing.");
355
391
  return raw;
356
392
  }
393
+ checkForApiError(data);
357
394
  return schema.parse(data);
358
395
  };
359
396
 
@@ -364,7 +401,8 @@ var DOMAIN_BOOLEANS = {
364
401
  onlyLiveTechnologies: "LIVEONLY",
365
402
  noMetaData: "NOMETA",
366
403
  noAttributeData: "NOATTR",
367
- noPII: "NOPII"
404
+ noPII: "NOPII",
405
+ includeTrust: "TRUST"
368
406
  };
369
407
  function createClient(apiKey, moduleParams = {}) {
370
408
  if (!apiKey) {
@@ -387,7 +425,7 @@ function createClient(apiKey, moduleParams = {}) {
387
425
  validateLookup(lookup, { multi: true });
388
426
  if (params)
389
427
  DomainParamsSchema.parse(params);
390
- return get(url("v22", {
428
+ return get(url("v23", {
391
429
  LOOKUP: Array.isArray(lookup) ? lookup.join(",") : lookup,
392
430
  ...booleanParams(params, DOMAIN_BOOLEANS),
393
431
  FDRANGE: params?.firstDetectedRange,
@@ -498,13 +536,24 @@ var commands = [
498
536
  { name: "noMetaData", description: "Exclude metadata", type: "boolean", required: false },
499
537
  { name: "noAttributeData", description: "Exclude attribute data", type: "boolean", required: false },
500
538
  { name: "noPII", description: "Exclude personally identifiable information", type: "boolean", required: false },
539
+ {
540
+ name: "includeTrust",
541
+ description: "Include Trust API data (uses an additional API credit)",
542
+ type: "boolean",
543
+ required: false
544
+ },
501
545
  {
502
546
  name: "firstDetectedRange",
503
- description: "Filter by first detected date range",
547
+ description: "Filter by first detected date range (YYYY-MM-DD|YYYY-MM-DD)",
504
548
  type: "string",
505
549
  required: false
506
550
  },
507
- { name: "lastDetectedRange", description: "Filter by last detected date range", type: "string", required: false }
551
+ {
552
+ name: "lastDetectedRange",
553
+ description: "Filter by last detected date range (YYYY-MM-DD|YYYY-MM-DD)",
554
+ type: "string",
555
+ required: false
556
+ }
508
557
  ],
509
558
  execute: (client, args) => {
510
559
  const lookup = splitLookup(args.lookup);
@@ -623,9 +672,9 @@ var commands = [
623
672
  ];
624
673
 
625
674
  // src/errors.ts
626
- import { z as z2 } from "zod/v4";
675
+ import { z as z3 } from "zod/v4";
627
676
  function formatError(err) {
628
- if (err instanceof z2.ZodError) {
677
+ if (err instanceof z3.ZodError) {
629
678
  const fields = err.issues.map((i) => {
630
679
  const path = i.path.length > 0 ? i.path.join(".") : "response";
631
680
  return ` ${path}: ${i.message}`;
@@ -657,6 +706,8 @@ function formatTable(data, indent = 0) {
657
706
  const allFlatObjects = data.every((item) => typeof item === "object" && item !== null && !Array.isArray(item) && Object.values(item).every((v) => v === null || typeof v !== "object"));
658
707
  if (allFlatObjects) {
659
708
  const keys = [...new Set(data.flatMap((item) => Object.keys(item)))];
709
+ if (keys.length === 0)
710
+ return `${pad}(${data.length} empty items)`;
660
711
  const widths = keys.map((k) => Math.max(k.length, ...data.map((item) => String(item[k] ?? "").length)));
661
712
  const header = keys.map((k, i) => k.padEnd(widths[i])).join(" ");
662
713
  const separator = keys.map((_, i) => "─".repeat(widths[i])).join(" ");
@@ -717,11 +768,15 @@ function printCommandHelp(cmd) {
717
768
  for (const f of flags) {
718
769
  console.log(` --${f.name.padEnd(28)} ${f.description} (${f.type})`);
719
770
  }
771
+ console.log();
720
772
  }
773
+ console.log("Global options:");
774
+ console.log(` --api-key <key> BuiltWith API key (or set BUILTWITH_API_KEY env var)`);
775
+ console.log(` --table Pretty-print output as a readable table instead of JSON`);
721
776
  }
722
777
  function run() {
723
778
  const argv = process.argv.slice(2);
724
- if (argv.includes("--version") || argv.includes("-V")) {
779
+ if (argv[0] === "--version" || argv[0] === "-V") {
725
780
  console.log(version);
726
781
  process.exit(0);
727
782
  }
@@ -743,7 +798,7 @@ function run() {
743
798
  }
744
799
  const primaryArg = cmd.args.find((a) => a.required);
745
800
  const primaryValue = argv[1];
746
- if (primaryArg && (!primaryValue || primaryValue.startsWith("--"))) {
801
+ if (primaryArg && (!primaryValue || primaryValue.startsWith("-"))) {
747
802
  console.error(`Error: missing required argument <${primaryArg.name}>`);
748
803
  process.exit(1);
749
804
  }
@@ -755,11 +810,17 @@ function run() {
755
810
  for (const f of flagArgs) {
756
811
  options[f.name] = { type: f.type === "boolean" ? "boolean" : "string" };
757
812
  }
758
- const { values } = parseArgs({
759
- args: argv.slice(2),
760
- options,
761
- strict: false
762
- });
813
+ let values;
814
+ try {
815
+ ({ values } = parseArgs({
816
+ args: argv.slice(2),
817
+ options,
818
+ strict: true
819
+ }));
820
+ } catch (err) {
821
+ console.error(`Error: ${err instanceof Error ? err.message : err}`);
822
+ process.exit(1);
823
+ }
763
824
  const useTable = Boolean(values.table);
764
825
  const apiKey = values["api-key"] || process.env.BUILTWITH_API_KEY;
765
826
  if (!apiKey) {
@@ -793,4 +854,4 @@ function run() {
793
854
  }
794
855
  run();
795
856
 
796
- //# debugId=6C78BC6092EC44B564756E2164756E21
857
+ //# debugId=C4179B005364C9AB64756E2164756E21
package/dist/cli.js.map CHANGED
@@ -3,16 +3,16 @@
3
3
  "sources": ["../src/config.ts", "../src/schemas.ts", "../src/params.ts", "../src/request.ts", "../src/index.ts", "../src/commands.ts", "../src/errors.ts", "../src/cli.ts", "../src/format.ts"],
4
4
  "sourcesContent": [
5
5
  "import type { ResponseFormat } from \"./schemas.js\";\n\nexport const VALID_RESPONSE_TYPES = {\n XML: \"xml\",\n JSON: \"json\",\n TXT: \"txt\",\n CSV: \"csv\",\n TSV: \"tsv\",\n} as const satisfies Record<string, ResponseFormat>;\n",
6
- "import { z } from \"zod/v4\";\n\n// ─── Input Schemas ───────────────────────────────────────────────────────────\n\n/** Supported API response formats. */\nexport const ResponseFormatSchema = z.enum([\"xml\", \"json\", \"txt\", \"csv\", \"tsv\"]);\n/**\n * Response format returned by the BuiltWith API.\n *\n * - `\"json\"` — parsed and validated (default)\n * - `\"xml\"` / `\"txt\"` / `\"csv\"` / `\"tsv\"` — returned as raw strings\n */\nexport type ResponseFormat = z.infer<typeof ResponseFormatSchema>;\n\n/** Validation schema for {@link ClientOptions}. */\nexport const ClientOptionsSchema = z.strictObject({\n responseFormat: ResponseFormatSchema.optional(),\n});\n/**\n * Options passed to `createClient`.\n *\n * @example\n * ```ts\n * const client = createClient(API_KEY, { responseFormat: \"xml\" });\n * ```\n */\nexport type ClientOptions = z.infer<typeof ClientOptionsSchema>;\n\n/** Matches YYYY-MM-DD or YYYY-MM-DD-YYYY-MM-DD date range format. */\nconst dateRangePattern = /^\\d{4}-\\d{2}-\\d{2}(-\\d{4}-\\d{2}-\\d{2})?$/;\n\n/** Validation schema for {@link DomainParams}. */\nexport const DomainParamsSchema = z.strictObject({\n hideAll: z.boolean().optional(),\n hideDescriptionAndLinks: z.boolean().optional(),\n onlyLiveTechnologies: z.boolean().optional(),\n noMetaData: z.boolean().optional(),\n noAttributeData: z.boolean().optional(),\n noPII: z.boolean().optional(),\n firstDetectedRange: z.string().regex(dateRangePattern, \"Expected YYYY-MM-DD or YYYY-MM-DD-YYYY-MM-DD\").optional(),\n lastDetectedRange: z.string().regex(dateRangePattern, \"Expected YYYY-MM-DD or YYYY-MM-DD-YYYY-MM-DD\").optional(),\n});\n/**\n * Optional parameters for the Domain API endpoint.\n *\n * @example\n * ```ts\n * await client.domain(\"example.com\", {\n * onlyLiveTechnologies: true,\n * hideAll: true,\n * });\n * ```\n */\nexport type DomainParams = z.infer<typeof DomainParamsSchema>;\n\n/** Validation schema for {@link ListsParams}. */\nexport const ListsParamsSchema = z.strictObject({\n includeMetaData: z.boolean().optional(),\n offset: z.string().optional(),\n since: z.string().optional(),\n});\n/**\n * Optional parameters for the Lists API endpoint.\n *\n * @example\n * ```ts\n * await client.lists(\"Shopify\", { since: \"2024-01-01\" });\n * ```\n */\nexport type ListsParams = z.infer<typeof ListsParamsSchema>;\n\n/** Validation schema for {@link TrendsParams}. */\nexport const TrendsParamsSchema = z.strictObject({\n date: z.string().optional(),\n});\n/**\n * Optional parameters for the Trends API endpoint.\n *\n * @example\n * ```ts\n * await client.trends(\"jQuery\", { date: \"2024-06\" });\n * ```\n */\nexport type TrendsParams = z.infer<typeof TrendsParamsSchema>;\n\n/** Validation schema for {@link CompanyToUrlParams}. */\nexport const CompanyToUrlParamsSchema = z.strictObject({\n tld: z.string().optional(),\n amount: z.number().optional(),\n});\n/**\n * Optional parameters for the Company-to-URL API endpoint.\n *\n * @example\n * ```ts\n * await client.companyToUrl(\"Google\", { tld: \"com\", amount: 5 });\n * ```\n */\nexport type CompanyToUrlParams = z.infer<typeof CompanyToUrlParamsSchema>;\n\n/** Validation schema for {@link TrustParams}. */\nexport const TrustParamsSchema = z.strictObject({\n words: z.string().optional(),\n live: z.boolean().optional(),\n});\n/**\n * Optional parameters for the Trust API endpoint.\n *\n * @example\n * ```ts\n * await client.trust(\"example.com\", { words: \"shop,buy\", live: true });\n * ```\n */\nexport type TrustParams = z.infer<typeof TrustParamsSchema>;\n\nexport const SingleLookupSchema = z.string().min(1);\nexport const MultiLookupSchema = z.union([z.string().min(1), z.array(z.string().min(1)).min(1).max(16)]);\n\n// ─── Response Schemas ────────────────────────────────────────────────────────\n// Use z.strictObject() to catch upstream API drift — if BuiltWith adds or\n// removes fields, the parse will fail, signaling the schema needs updating.\n\n/** Validation schema for {@link FreeResponse}. */\nexport const FreeResponseSchema = z.strictObject({\n domain: z.string(),\n first: z.number(),\n last: z.number(),\n groups: z.array(\n z.strictObject({\n name: z.string(),\n live: z.number(),\n dead: z.number(),\n latest: z.number(),\n oldest: z.number(),\n categories: z.array(\n z.strictObject({\n live: z.number(),\n dead: z.number(),\n latest: z.number(),\n oldest: z.number(),\n name: z.string(),\n }),\n ),\n }),\n ),\n});\n/** Response from the Free API — basic technology profile for a single domain. */\nexport type FreeResponse = z.infer<typeof FreeResponseSchema>;\n\nconst TechnologySchema = z.strictObject({\n Name: z.string(),\n Description: z.string(),\n Link: z.string(),\n Parent: z.string().optional(),\n Tag: z.string(),\n FirstDetected: z.number(),\n LastDetected: z.number(),\n IsPremium: z.string(),\n Categories: z.array(z.string()).optional(),\n});\n\nconst PathSchema = z.strictObject({\n Technologies: z.array(TechnologySchema),\n FirstIndexed: z.number(),\n LastIndexed: z.number(),\n Domain: z.string(),\n Url: z.string(),\n SubDomain: z.string(),\n});\n\nconst MetaSchema = z.strictObject({\n Majestic: z.number(),\n Vertical: z.string(),\n Social: z.array(z.string()),\n CompanyName: z.string(),\n Telephones: z.array(z.string()),\n Emails: z.array(z.string()),\n City: z.string(),\n State: z.string(),\n Postcode: z.string(),\n Country: z.string(),\n Names: z.array(\n z.strictObject({\n Name: z.string(),\n Type: z.number(),\n Level: z.string(),\n Email: z.string(),\n }),\n ),\n ARank: z.number(),\n QRank: z.number(),\n});\n\nconst AttributesSchema = z.strictObject({\n MJRank: z.number(),\n MJTLDRank: z.number(),\n RefSN: z.number(),\n RefIP: z.number(),\n Sitemap: z.number(),\n GTMTags: z.number(),\n QubitTags: z.number(),\n TealiumTags: z.number(),\n AdobeTags: z.number(),\n CDimensions: z.number(),\n CGoals: z.number(),\n CMetrics: z.number(),\n});\n\n/** Validation schema for {@link DomainResponse}. */\nexport const DomainResponseSchema = z.strictObject({\n Results: z.array(\n z.strictObject({\n Result: z.strictObject({\n SpendHistory: z.array(\n z.strictObject({\n D: z.number(),\n S: z.number(),\n }),\n ),\n IsDB: z.string(),\n Spend: z.number(),\n Paths: z.array(PathSchema),\n }),\n Meta: MetaSchema,\n Attributes: AttributesSchema,\n FirstIndexed: z.number(),\n LastIndexed: z.number(),\n Lookup: z.string(),\n SalesRevenue: z.number(),\n }),\n ),\n Errors: z.array(z.string()),\n});\n/** Response from the Domain API — detailed technology profile with metadata and attributes. */\nexport type DomainResponse = z.infer<typeof DomainResponseSchema>;\n\n/** Validation schema for {@link ListsResponse}. */\nexport const ListsResponseSchema = z.strictObject({\n NextOffset: z.string(),\n Results: z.array(\n z.strictObject({\n D: z.string(),\n FI: z.number().optional(),\n LI: z.number().optional(),\n LOS: z.array(z.string()).optional(),\n Q: z.number().optional(),\n A: z.number().optional(),\n U: z.number().optional(),\n M: z.number().optional(),\n SKU: z.number().optional(),\n F: z.number().optional(),\n E: z.number().optional(),\n FD: z.number().optional(),\n LD: z.number().optional(),\n S: z.number().optional(),\n R: z.number().optional(),\n Country: z.string().optional(),\n }),\n ),\n});\n/** Response from the Lists API — domains using a specific technology. */\nexport type ListsResponse = z.infer<typeof ListsResponseSchema>;\n\n/** Validation schema for {@link RelationshipsResponse}. */\nexport const RelationshipsResponseSchema = z.strictObject({\n Relationships: z.array(\n z.strictObject({\n Domain: z.string(),\n Identifiers: z.array(\n z.strictObject({\n Value: z.string(),\n Type: z.string(),\n First: z.number(),\n Last: z.number(),\n Matches: z.array(\n z.strictObject({\n Domain: z.string(),\n First: z.number(),\n Last: z.number(),\n Overlap: z.boolean(),\n }),\n ),\n }),\n ),\n }),\n ),\n Errors: z.array(z.string()),\n results: z.number(),\n max_per_page: z.number(),\n next_skip: z.number(),\n more_results: z.boolean(),\n});\n/** Response from the Relationships API — domains sharing identifiers (analytics IDs, ad accounts, etc.). */\nexport type RelationshipsResponse = z.infer<typeof RelationshipsResponseSchema>;\n\n/** Validation schema for {@link KeywordsResponse}. */\nexport const KeywordsResponseSchema = z.strictObject({\n Keywords: z.array(\n z.strictObject({\n Domain: z.string(),\n Keywords: z.array(z.string()),\n }),\n ),\n});\n/** Response from the Keywords API — SEO keywords associated with domains. */\nexport type KeywordsResponse = z.infer<typeof KeywordsResponseSchema>;\n\n/** Validation schema for {@link TrendsResponse}. */\nexport const TrendsResponseSchema = z.strictObject({\n Tech: z.strictObject({\n icon: z.string(),\n categories: z.array(z.string()),\n tag: z.string(),\n is_premium: z.string(),\n name: z.string(),\n description: z.string(),\n link: z.string(),\n trends_link: z.string(),\n coverage: z.strictObject({\n ten_k: z.number(),\n hundred_k: z.number(),\n milly: z.number(),\n live: z.number(),\n expired: z.number(),\n }),\n }),\n});\n/** Response from the Trends API — technology adoption coverage data. */\nexport type TrendsResponse = z.infer<typeof TrendsResponseSchema>;\n\n/** Validation schema for {@link CompanyToUrlResponse}. */\nexport const CompanyToUrlResponseSchema = z.array(\n z.strictObject({\n Domain: z.string(),\n CompanyName: z.string(),\n Spend: z.number(),\n PageRank: z.number(),\n BuiltWithRank: z.number(),\n Parked: z.boolean(),\n Country: z.string(),\n State: z.string(),\n Postcode: z.string(),\n City: z.string(),\n Socials: z.array(z.string()),\n }),\n);\n/** Response from the Company-to-URL API — domains associated with a company name. */\nexport type CompanyToUrlResponse = z.infer<typeof CompanyToUrlResponseSchema>;\n\n/** Validation schema for {@link TrustResponse}. */\nexport const TrustResponseSchema = z.strictObject({\n Domain: z.string(),\n DBRecord: z.strictObject({\n EarliestRecord: z.number(),\n LatestUpdate: z.number(),\n PremiumTechs: z.number(),\n LiveTechs: z.boolean(),\n AffiliateLinks: z.boolean(),\n PaymentOptions: z.boolean(),\n Ecommerce: z.boolean(),\n Parked: z.boolean(),\n Spend: z.number(),\n Established: z.boolean(),\n DBIndexed: z.boolean(),\n }),\n // Intentionally loose — BuiltWith does not document the LiveRecord shape.\n // Populated only when `live: true` is passed; otherwise null.\n LiveRecord: z.object({}).passthrough().nullable(),\n Status: z.number(),\n});\n/** Response from the Trust API — domain verification and trust score. */\nexport type TrustResponse = z.infer<typeof TrustResponseSchema>;\n\n/** Validation schema for {@link TagsResponse}. */\nexport const TagsResponseSchema = z.array(\n z.strictObject({\n Value: z.string(),\n Matches: z.array(\n z.strictObject({\n Domain: z.string(),\n First: z.string(),\n Last: z.string(),\n }),\n ),\n }),\n);\n/** Response from the Tags API — tracking and analytics tags found on a domain. */\nexport type TagsResponse = z.infer<typeof TagsResponseSchema>;\n\n/** Validation schema for {@link RecommendationsResponse}. */\nexport const RecommendationsResponseSchema = z.array(\n z.strictObject({\n Domain: z.string(),\n Compiled: z.string(),\n Recommendations: z.array(\n z.strictObject({\n link: z.string(),\n name: z.string(),\n tag: z.string(),\n categories: z.array(z.string()),\n stars: z.number(),\n match: z.number(),\n }),\n ),\n }),\n);\n/** Response from the Recommendations API — suggested technologies for a domain. */\nexport type RecommendationsResponse = z.infer<typeof RecommendationsResponseSchema>;\n\n/** Validation schema for {@link RedirectsResponse}. */\nexport const RedirectsResponseSchema = z.strictObject({\n Lookup: z.string(),\n Inbound: z.array(\n z.strictObject({\n Domain: z.string(),\n FirstDetected: z.string(),\n LastDetected: z.string(),\n }),\n ),\n Outbound: z.array(\n z.strictObject({\n Domain: z.string(),\n FirstDetected: z.string(),\n LastDetected: z.string(),\n }),\n ),\n});\n/** Response from the Redirects API — inbound and outbound redirect chains. */\nexport type RedirectsResponse = z.infer<typeof RedirectsResponseSchema>;\n\n/** Validation schema for {@link ProductResponse}. */\nexport const ProductResponseSchema = z.strictObject({\n query: z.string(),\n is_more: z.boolean(),\n page: z.number(),\n limit: z.number(),\n results: z.number(),\n shop_count: z.number(),\n credits: z.number(),\n used: z.number(),\n remaining: z.number(),\n used_this_query: z.number(),\n next_page: z.string(),\n shops: z.array(\n z.strictObject({\n Domain: z.string(),\n Products: z.array(\n z.strictObject({\n Title: z.string(),\n Url: z.string(),\n Indexed: z.string(),\n FirstIndexed: z.string(),\n Price: z.number(),\n }),\n ),\n Type: z.number(),\n Spend: z.number(),\n }),\n ),\n});\n/** Response from the Product API — e-commerce product search results. */\nexport type ProductResponse = z.infer<typeof ProductResponseSchema>;\n\n// ─── Client Interface ────────────────────────────────────────────────────────\n\n/**\n * The BuiltWith API client. Created via `createClient()`.\n *\n * All methods return validated, typed responses when using JSON format,\n * or raw strings for XML/TXT/CSV/TSV formats.\n *\n * @example\n * ```ts\n * import { createClient } from \"builtwith-api\";\n *\n * const client = createClient(process.env.BUILTWITH_API_KEY!);\n * const profile = await client.free(\"example.com\");\n * ```\n */\nexport interface BuiltWithClient {\n /** Free lookup — basic technology profile for a single domain. */\n free(lookup: string): Promise<FreeResponse | string>;\n /**\n * Detailed technology profile for one or more domains.\n * @param lookup - Single domain or array of up to 16 domains.\n * @param params - Optional filters (hide fields, date ranges, etc.).\n */\n domain(lookup: string | string[], params?: DomainParams): Promise<DomainResponse | string>;\n /**\n * List domains using a specific technology.\n * @param technology - Technology name (e.g. \"Shopify\", \"React\").\n * @param params - Optional pagination and filtering.\n */\n lists(technology: string, params?: ListsParams): Promise<ListsResponse | string>;\n /**\n * Find related domains via shared identifiers (analytics IDs, ad accounts, etc.).\n * @param lookup - Single domain or array of up to 16 domains.\n */\n relationships(lookup: string | string[]): Promise<RelationshipsResponse | string>;\n /**\n * Get SEO keywords associated with one or more domains.\n * @param lookup - Single domain or array of up to 16 domains.\n */\n keywords(lookup: string | string[]): Promise<KeywordsResponse | string>;\n /**\n * Technology adoption trends and coverage data.\n * @param technology - Technology name to look up.\n * @param params - Optional date filter.\n */\n trends(technology: string, params?: TrendsParams): Promise<TrendsResponse | string>;\n /**\n * Find domains associated with a company name.\n * @param companyName - Company name to search.\n * @param params - Optional TLD filter and result count.\n */\n companyToUrl(companyName: string, params?: CompanyToUrlParams): Promise<CompanyToUrlResponse | string>;\n /** Live technology lookup — scans the domain in real time. */\n domainLive(lookup: string): Promise<DomainResponse | string>;\n /**\n * Trust and verification score for a domain.\n * @param lookup - Domain to look up.\n * @param params - Optional keywords and live analysis toggle.\n */\n trust(lookup: string, params?: TrustParams): Promise<TrustResponse | string>;\n /** Get tracking and analytics tags found on a domain. */\n tags(lookup: string): Promise<TagsResponse | string>;\n /** Get technology recommendations for a domain. */\n recommendations(lookup: string): Promise<RecommendationsResponse | string>;\n /** Get inbound and outbound redirect chains for a domain. */\n redirects(lookup: string): Promise<RedirectsResponse | string>;\n /** Search for products across e-commerce sites. */\n product(query: string): Promise<ProductResponse | string>;\n}\n\n// ─── Utility Types ───────────────────────────────────────────────────────────\n\n/** @internal Maps JS param names to BuiltWith API query string keys. */\nexport type BooleanMapping = Record<string, string>;\n/** @internal URL query parameters — `undefined` values are omitted. */\nexport type QueryParams = Record<string, string | number | undefined>;\n",
6
+ "import { z } from \"zod/v4\";\n\n// ─── Input Schemas ───────────────────────────────────────────────────────────\n\n/** Supported API response formats. */\nexport const ResponseFormatSchema = z.enum([\"xml\", \"json\", \"txt\", \"csv\", \"tsv\"]);\n/**\n * Response format returned by the BuiltWith API.\n *\n * - `\"json\"` — parsed and validated (default)\n * - `\"xml\"` / `\"txt\"` / `\"csv\"` / `\"tsv\"` — returned as raw strings\n */\nexport type ResponseFormat = z.infer<typeof ResponseFormatSchema>;\n\n/** Validation schema for {@link ClientOptions}. */\nexport const ClientOptionsSchema = z.strictObject({\n responseFormat: ResponseFormatSchema.optional(),\n});\n/**\n * Options passed to `createClient`.\n *\n * @example\n * ```ts\n * const client = createClient(API_KEY, { responseFormat: \"xml\" });\n * ```\n */\nexport type ClientOptions = z.infer<typeof ClientOptionsSchema>;\n\n/** Matches YYYY-MM-DD or a pipe-joined YYYY-MM-DD|YYYY-MM-DD range (v23 FDRANGE/LDRANGE format). */\nconst dateRangePattern = /^\\d{4}-\\d{2}-\\d{2}(\\|\\d{4}-\\d{2}-\\d{2})?$/;\n\n/** Validation schema for {@link DomainParams}. */\nexport const DomainParamsSchema = z.strictObject({\n hideAll: z.boolean().optional(),\n hideDescriptionAndLinks: z.boolean().optional(),\n onlyLiveTechnologies: z.boolean().optional(),\n noMetaData: z.boolean().optional(),\n noAttributeData: z.boolean().optional(),\n noPII: z.boolean().optional(),\n includeTrust: z.boolean().optional(),\n firstDetectedRange: z.string().regex(dateRangePattern, \"Expected YYYY-MM-DD or YYYY-MM-DD|YYYY-MM-DD\").optional(),\n lastDetectedRange: z.string().regex(dateRangePattern, \"Expected YYYY-MM-DD or YYYY-MM-DD|YYYY-MM-DD\").optional(),\n});\n/**\n * Optional parameters for the Domain API endpoint.\n *\n * @example\n * ```ts\n * await client.domain(\"example.com\", {\n * onlyLiveTechnologies: true,\n * hideAll: true,\n * });\n * ```\n */\nexport type DomainParams = z.infer<typeof DomainParamsSchema>;\n\n/** Validation schema for {@link ListsParams}. */\nexport const ListsParamsSchema = z.strictObject({\n includeMetaData: z.boolean().optional(),\n offset: z.string().optional(),\n since: z.string().optional(),\n});\n/**\n * Optional parameters for the Lists API endpoint.\n *\n * @example\n * ```ts\n * await client.lists(\"Shopify\", { since: \"2024-01-01\" });\n * ```\n */\nexport type ListsParams = z.infer<typeof ListsParamsSchema>;\n\n/** Validation schema for {@link TrendsParams}. */\nexport const TrendsParamsSchema = z.strictObject({\n date: z.string().optional(),\n});\n/**\n * Optional parameters for the Trends API endpoint.\n *\n * @example\n * ```ts\n * await client.trends(\"jQuery\", { date: \"2024-06\" });\n * ```\n */\nexport type TrendsParams = z.infer<typeof TrendsParamsSchema>;\n\n/** Validation schema for {@link CompanyToUrlParams}. */\nexport const CompanyToUrlParamsSchema = z.strictObject({\n tld: z.string().optional(),\n amount: z.number().optional(),\n});\n/**\n * Optional parameters for the Company-to-URL API endpoint.\n *\n * @example\n * ```ts\n * await client.companyToUrl(\"Google\", { tld: \"com\", amount: 5 });\n * ```\n */\nexport type CompanyToUrlParams = z.infer<typeof CompanyToUrlParamsSchema>;\n\n/** Validation schema for {@link TrustParams}. */\nexport const TrustParamsSchema = z.strictObject({\n words: z.string().optional(),\n live: z.boolean().optional(),\n});\n/**\n * Optional parameters for the Trust API endpoint.\n *\n * @example\n * ```ts\n * await client.trust(\"example.com\", { words: \"shop,buy\", live: true });\n * ```\n */\nexport type TrustParams = z.infer<typeof TrustParamsSchema>;\n\nexport const SingleLookupSchema = z.string().min(1);\nexport const MultiLookupSchema = z.union([z.string().min(1), z.array(z.string().min(1)).min(1).max(16)]);\n\n// ─── Response Schemas ────────────────────────────────────────────────────────\n// Use z.strictObject() to catch upstream API drift — if BuiltWith adds or\n// removes fields, the parse will fail, signaling the schema needs updating.\n\n/** Validation schema for {@link FreeResponse}. */\nexport const FreeResponseSchema = z.strictObject({\n domain: z.string(),\n first: z.number(),\n last: z.number(),\n groups: z.array(\n z.strictObject({\n name: z.string(),\n live: z.number(),\n dead: z.number(),\n latest: z.number(),\n oldest: z.number(),\n categories: z.array(\n z.strictObject({\n live: z.number(),\n dead: z.number(),\n latest: z.number(),\n oldest: z.number(),\n name: z.string(),\n }),\n ),\n }),\n ),\n});\n/** Response from the Free API — basic technology profile for a single domain. */\nexport type FreeResponse = z.infer<typeof FreeResponseSchema>;\n\nconst TechnologySchema = z.strictObject({\n Id: z.number(),\n Name: z.string(),\n Description: z.string(),\n Link: z.string(),\n Parent: z.string().optional(),\n Tag: z.string(),\n FirstDetected: z.number(),\n LastDetected: z.number(),\n IsPremium: z.string(),\n Categories: z.array(z.string()).optional(),\n});\n\nconst PathSchema = z.strictObject({\n Technologies: z.array(TechnologySchema),\n FirstIndexed: z.number(),\n LastIndexed: z.number(),\n Domain: z.string(),\n Url: z.string(),\n SubDomain: z.string(),\n});\n\nconst MetaSchema = z.strictObject({\n Majestic: z.number(),\n Umbrella: z.number().optional(),\n Vertical: z.string(),\n Social: z.array(z.string()).optional(),\n CompanyName: z.string(),\n Telephones: z.array(z.string()),\n Emails: z.array(z.string()),\n City: z.string(),\n State: z.string(),\n Postcode: z.string(),\n Country: z.string(),\n Names: z.array(\n z.strictObject({\n Name: z.string(),\n Type: z.number(),\n Level: z.string(),\n Email: z.string(),\n }),\n ),\n ARank: z.number(),\n QRank: z.number(),\n});\n\nconst AttributesSchema = z.strictObject({\n MJRank: z.number(),\n MJTLDRank: z.number(),\n RefSN: z.number(),\n RefIP: z.number(),\n Sitemap: z.number(),\n GTMTags: z.number(),\n QubitTags: z.number(),\n TealiumTags: z.number(),\n AdobeTags: z.number(),\n CDimensions: z.number(),\n CGoals: z.number(),\n CMetrics: z.number(),\n Followers: z.number().optional(),\n Employees: z.number().optional(),\n ProductCount: z.number().optional(),\n Revenue: z.number().optional(),\n PageRank: z.number().optional(),\n BWRank: z.number().optional(),\n Tranco: z.number().optional(),\n BWS: z.number().optional(),\n EcommerceCategory: z.number().optional(),\n TTFB: z.number().optional(),\n SourceBytes: z.number().optional(),\n AIMaturity: z.number().optional(),\n AIOpenness: z.number().optional(),\n AIReadiness: z.number().optional(),\n AIVisibility: z.number().optional(),\n});\n\n/** Validation schema for {@link DomainResponse}. */\nexport const DomainResponseSchema = z.strictObject({\n Results: z.array(\n z.strictObject({\n Result: z.strictObject({\n SpendHistory: z.array(\n z.strictObject({\n D: z.number(),\n S: z.number(),\n }),\n ),\n IsDB: z.string(),\n Spend: z.number(),\n Paths: z.array(PathSchema),\n }),\n Meta: MetaSchema,\n Attributes: AttributesSchema,\n FirstIndexed: z.number(),\n LastIndexed: z.number(),\n Lookup: z.string(),\n SalesRevenue: z.number(),\n }),\n ),\n Errors: z.array(z.string()),\n});\n/** Response from the Domain API — detailed technology profile with metadata and attributes. */\nexport type DomainResponse = z.infer<typeof DomainResponseSchema>;\n\n/** Validation schema for {@link ListsResponse}. */\nexport const ListsResponseSchema = z.strictObject({\n NextOffset: z.string(),\n Results: z.array(\n z.strictObject({\n D: z.string(),\n FI: z.number().optional(),\n LI: z.number().optional(),\n LOS: z.array(z.string()).optional(),\n Q: z.number().optional(),\n A: z.number().optional(),\n U: z.number().optional(),\n M: z.number().optional(),\n SKU: z.number().optional(),\n F: z.number().optional(),\n E: z.number().optional(),\n FD: z.number().optional(),\n LD: z.number().optional(),\n S: z.number().optional(),\n R: z.number().optional(),\n Country: z.string().optional(),\n }),\n ),\n});\n/** Response from the Lists API — domains using a specific technology. */\nexport type ListsResponse = z.infer<typeof ListsResponseSchema>;\n\n/** Validation schema for {@link RelationshipsResponse}. */\nexport const RelationshipsResponseSchema = z.strictObject({\n Relationships: z.array(\n z.strictObject({\n Domain: z.string(),\n Identifiers: z.array(\n z.strictObject({\n Value: z.string(),\n Type: z.string(),\n First: z.number(),\n Last: z.number(),\n Matches: z.array(\n z.strictObject({\n Domain: z.string(),\n First: z.number(),\n Last: z.number(),\n Overlap: z.boolean(),\n }),\n ),\n }),\n ),\n }),\n ),\n Errors: z.array(z.string()),\n results: z.number(),\n max_per_page: z.number(),\n next_skip: z.number(),\n more_results: z.boolean(),\n});\n/** Response from the Relationships API — domains sharing identifiers (analytics IDs, ad accounts, etc.). */\nexport type RelationshipsResponse = z.infer<typeof RelationshipsResponseSchema>;\n\n/** Validation schema for {@link KeywordsResponse}. */\nexport const KeywordsResponseSchema = z.strictObject({\n Keywords: z.array(\n z.strictObject({\n Domain: z.string(),\n Keywords: z.array(z.string()),\n }),\n ),\n});\n/** Response from the Keywords API — SEO keywords associated with domains. */\nexport type KeywordsResponse = z.infer<typeof KeywordsResponseSchema>;\n\n/** Validation schema for {@link TrendsResponse}. */\nexport const TrendsResponseSchema = z.strictObject({\n Tech: z.strictObject({\n icon: z.string(),\n categories: z.array(z.string()),\n tag: z.string(),\n is_premium: z.string(),\n name: z.string(),\n description: z.string(),\n link: z.string(),\n trends_link: z.string(),\n coverage: z.strictObject({\n ten_k: z.number(),\n hundred_k: z.number(),\n milly: z.number(),\n live: z.number(),\n expired: z.number(),\n }),\n }),\n});\n/** Response from the Trends API — technology adoption coverage data. */\nexport type TrendsResponse = z.infer<typeof TrendsResponseSchema>;\n\n/** Validation schema for {@link CompanyToUrlResponse}. */\nexport const CompanyToUrlResponseSchema = z.array(\n z.strictObject({\n Domain: z.string(),\n CompanyName: z.string(),\n Spend: z.number(),\n PageRank: z.number(),\n BuiltWithRank: z.number(),\n Parked: z.boolean(),\n Country: z.string(),\n State: z.string(),\n Postcode: z.string(),\n City: z.string(),\n Socials: z.array(z.string()),\n }),\n);\n/** Response from the Company-to-URL API — domains associated with a company name. */\nexport type CompanyToUrlResponse = z.infer<typeof CompanyToUrlResponseSchema>;\n\n/** Validation schema for {@link TrustResponse}. */\nexport const TrustResponseSchema = z.strictObject({\n Domain: z.string(),\n DBRecord: z.strictObject({\n EarliestRecord: z.number(),\n LatestUpdate: z.number(),\n PremiumTechs: z.number(),\n LiveTechs: z.boolean(),\n AffiliateLinks: z.boolean(),\n PaymentOptions: z.boolean(),\n Ecommerce: z.boolean(),\n Parked: z.boolean(),\n Spend: z.number(),\n Established: z.boolean(),\n DBIndexed: z.boolean(),\n }),\n // Intentionally loose — BuiltWith does not document the LiveRecord shape.\n // Populated only when `live: true` is passed; otherwise null.\n LiveRecord: z.object({}).passthrough().nullable(),\n Status: z.number(),\n});\n/** Response from the Trust API — domain verification and trust score. */\nexport type TrustResponse = z.infer<typeof TrustResponseSchema>;\n\n/** Validation schema for {@link TagsResponse}. */\nexport const TagsResponseSchema = z.array(\n z.strictObject({\n Value: z.string(),\n Matches: z.array(\n z.strictObject({\n Domain: z.string(),\n First: z.string(),\n Last: z.string(),\n }),\n ),\n }),\n);\n/** Response from the Tags API — tracking and analytics tags found on a domain. */\nexport type TagsResponse = z.infer<typeof TagsResponseSchema>;\n\n/** Validation schema for {@link RecommendationsResponse}. */\nexport const RecommendationsResponseSchema = z.array(\n z.strictObject({\n Domain: z.string(),\n Compiled: z.string(),\n Recommendations: z.array(\n z.strictObject({\n link: z.string(),\n name: z.string(),\n tag: z.string(),\n categories: z.array(z.string()),\n stars: z.number(),\n match: z.number(),\n }),\n ),\n }),\n);\n/** Response from the Recommendations API — suggested technologies for a domain. */\nexport type RecommendationsResponse = z.infer<typeof RecommendationsResponseSchema>;\n\n/** Validation schema for {@link RedirectsResponse}. */\nexport const RedirectsResponseSchema = z.strictObject({\n Lookup: z.string(),\n Inbound: z.array(\n z.strictObject({\n Domain: z.string(),\n FirstDetected: z.string(),\n LastDetected: z.string(),\n }),\n ),\n Outbound: z.array(\n z.strictObject({\n Domain: z.string(),\n FirstDetected: z.string(),\n LastDetected: z.string(),\n }),\n ),\n});\n/** Response from the Redirects API — inbound and outbound redirect chains. */\nexport type RedirectsResponse = z.infer<typeof RedirectsResponseSchema>;\n\n/** Validation schema for {@link ProductResponse}. */\nexport const ProductResponseSchema = z.strictObject({\n query: z.string(),\n is_more: z.boolean(),\n page: z.number(),\n limit: z.number(),\n results: z.number(),\n shop_count: z.number(),\n credits: z.number(),\n used: z.number(),\n remaining: z.number(),\n used_this_query: z.number(),\n next_page: z.string(),\n shops: z.array(\n z.strictObject({\n Domain: z.string(),\n Products: z.array(\n z.strictObject({\n Title: z.string(),\n Url: z.string(),\n Indexed: z.string(),\n FirstIndexed: z.string(),\n Price: z.number(),\n }),\n ),\n Type: z.number(),\n Spend: z.number(),\n }),\n ),\n});\n/** Response from the Product API — e-commerce product search results. */\nexport type ProductResponse = z.infer<typeof ProductResponseSchema>;\n\n// ─── Client Interface ────────────────────────────────────────────────────────\n\n/**\n * The BuiltWith API client. Created via `createClient()`.\n *\n * All methods return validated, typed responses when using JSON format,\n * or raw strings for XML/TXT/CSV/TSV formats.\n *\n * @example\n * ```ts\n * import { createClient } from \"builtwith-api\";\n *\n * const client = createClient(process.env.BUILTWITH_API_KEY!);\n * const profile = await client.free(\"example.com\");\n * ```\n */\nexport interface BuiltWithClient {\n /** Free lookup — basic technology profile for a single domain. */\n free(lookup: string): Promise<FreeResponse | string>;\n /**\n * Detailed technology profile for one or more domains.\n * @param lookup - Single domain or array of up to 16 domains.\n * @param params - Optional filters (hide fields, date ranges, etc.).\n */\n domain(lookup: string | string[], params?: DomainParams): Promise<DomainResponse | string>;\n /**\n * List domains using a specific technology.\n * @param technology - Technology name (e.g. \"Shopify\", \"React\").\n * @param params - Optional pagination and filtering.\n */\n lists(technology: string, params?: ListsParams): Promise<ListsResponse | string>;\n /**\n * Find related domains via shared identifiers (analytics IDs, ad accounts, etc.).\n * @param lookup - Single domain or array of up to 16 domains.\n */\n relationships(lookup: string | string[]): Promise<RelationshipsResponse | string>;\n /**\n * Get SEO keywords associated with one or more domains.\n * @param lookup - Single domain or array of up to 16 domains.\n */\n keywords(lookup: string | string[]): Promise<KeywordsResponse | string>;\n /**\n * Technology adoption trends and coverage data.\n * @param technology - Technology name to look up.\n * @param params - Optional date filter.\n */\n trends(technology: string, params?: TrendsParams): Promise<TrendsResponse | string>;\n /**\n * Find domains associated with a company name.\n * @param companyName - Company name to search.\n * @param params - Optional TLD filter and result count.\n */\n companyToUrl(companyName: string, params?: CompanyToUrlParams): Promise<CompanyToUrlResponse | string>;\n /** Live technology lookup — scans the domain in real time. */\n domainLive(lookup: string): Promise<DomainResponse | string>;\n /**\n * Trust and verification score for a domain.\n * @param lookup - Domain to look up.\n * @param params - Optional keywords and live analysis toggle.\n */\n trust(lookup: string, params?: TrustParams): Promise<TrustResponse | string>;\n /** Get tracking and analytics tags found on a domain. */\n tags(lookup: string): Promise<TagsResponse | string>;\n /** Get technology recommendations for a domain. */\n recommendations(lookup: string): Promise<RecommendationsResponse | string>;\n /** Get inbound and outbound redirect chains for a domain. */\n redirects(lookup: string): Promise<RedirectsResponse | string>;\n /** Search for products across e-commerce sites. */\n product(query: string): Promise<ProductResponse | string>;\n}\n\n// ─── Utility Types ───────────────────────────────────────────────────────────\n\n/** @internal Maps JS param names to BuiltWith API query string keys. */\nexport type BooleanMapping = Record<string, string>;\n/** @internal URL query parameters — `undefined` values are omitted. */\nexport type QueryParams = Record<string, string | number | undefined>;\n",
7
7
  "import type { BooleanMapping, QueryParams } from \"./schemas.js\";\nimport { MultiLookupSchema, SingleLookupSchema } from \"./schemas.js\";\n\nexport const toQueryString = (params: QueryParams): string =>\n Object.entries(params)\n .filter((entry): entry is [string, string | number] => entry[1] !== undefined)\n .map(([k, v]) => `${k}=${encodeURIComponent(v).replace(/%2C/gi, \",\")}`)\n .join(\"&\");\n\nconst booleanFlag = (value: unknown): \"yes\" | undefined => (value ? \"yes\" : undefined);\n\nexport const booleanParams = (\n params: Record<string, unknown> | null | undefined,\n mapping: BooleanMapping,\n): QueryParams =>\n Object.fromEntries(Object.entries(mapping).map(([jsKey, apiKey]) => [apiKey, booleanFlag(params?.[jsKey])]));\n\nexport const cleanWords = (words: string | undefined): string | undefined =>\n words\n ? words\n .split(\",\")\n .map((w) => w.trim())\n .join(\",\")\n : undefined;\n\nexport const buildURL = (\n apiKey: string,\n format: string,\n path: string,\n params: QueryParams,\n subdomain: string = \"api\",\n): string => {\n const base = `https://${subdomain}.builtwith.com/${path}/api.${format}?KEY=${apiKey}`;\n const qs = toQueryString(params);\n return qs ? `${base}&${qs}` : base;\n};\n\nexport const validateLookup = (url: string | string[], { multi = false }: { multi?: boolean } = {}): void => {\n if (multi) {\n MultiLookupSchema.parse(url);\n } else {\n SingleLookupSchema.parse(url);\n }\n if (Array.isArray(url)) {\n if (!multi) throw new Error(\"API does not allow for multi-domain LOOKUP\");\n if (url.length > 16) throw new Error(\"Domain LOOKUP size too big (16 max)\");\n }\n};\n",
8
- "import type { z } from \"zod/v4\";\nimport { VALID_RESPONSE_TYPES } from \"./config.js\";\nimport type { ResponseFormat } from \"./schemas.js\";\n\nconst TEXT_FORMATS: readonly ResponseFormat[] = [\n VALID_RESPONSE_TYPES.TXT,\n VALID_RESPONSE_TYPES.XML,\n VALID_RESPONSE_TYPES.CSV,\n VALID_RESPONSE_TYPES.TSV,\n];\n\nexport const request = async <T>(url: string, format: ResponseFormat, schema: z.ZodType<T>): Promise<T | string> => {\n const res = await fetch(url);\n if (!res.ok) {\n const body = await res.text();\n throw new Error(`BuiltWith API error ${res.status}: ${body}`);\n }\n if (TEXT_FORMATS.includes(format)) {\n return res.text();\n }\n const data: unknown = await res.json();\n return schema.parse(data);\n};\n\nexport const requestSafe = async <T>(\n url: string,\n format: ResponseFormat,\n schema: z.ZodType<T>,\n): Promise<T | string> => {\n const res = await fetch(url);\n if (!res.ok) {\n const body = await res.text();\n throw new Error(`BuiltWith API error ${res.status}: ${body}`);\n }\n if (TEXT_FORMATS.includes(format)) {\n return res.text();\n }\n const raw = await res.text();\n let data: unknown;\n try {\n data = JSON.parse(raw);\n } catch {\n console.warn(\"BuiltWith sent an invalid JSON payload. Falling back to text parsing.\");\n return raw;\n }\n return schema.parse(data);\n};\n",
9
- "import { VALID_RESPONSE_TYPES } from \"./config.js\";\nimport { booleanParams, buildURL, cleanWords, validateLookup } from \"./params.js\";\nimport { request, requestSafe } from \"./request.js\";\nimport type {\n BooleanMapping,\n BuiltWithClient,\n ClientOptions,\n CompanyToUrlParams,\n DomainParams,\n ListsParams,\n QueryParams,\n ResponseFormat,\n TrendsParams,\n TrustParams,\n} from \"./schemas.js\";\nimport {\n ClientOptionsSchema,\n CompanyToUrlParamsSchema,\n CompanyToUrlResponseSchema,\n DomainParamsSchema,\n DomainResponseSchema,\n FreeResponseSchema,\n KeywordsResponseSchema,\n ListsParamsSchema,\n ListsResponseSchema,\n ProductResponseSchema,\n RecommendationsResponseSchema,\n RedirectsResponseSchema,\n RelationshipsResponseSchema,\n TagsResponseSchema,\n TrendsParamsSchema,\n TrendsResponseSchema,\n TrustParamsSchema,\n TrustResponseSchema,\n} from \"./schemas.js\";\n\nconst DOMAIN_BOOLEANS: BooleanMapping = {\n hideAll: \"HIDETEXT\",\n hideDescriptionAndLinks: \"HIDEDL\",\n onlyLiveTechnologies: \"LIVEONLY\",\n noMetaData: \"NOMETA\",\n noAttributeData: \"NOATTR\",\n noPII: \"NOPII\",\n};\n\n/**\n * Create a BuiltWith API client.\n *\n * @param apiKey - Your BuiltWith API key.\n * @param moduleParams - Optional client configuration (e.g. response format).\n * @returns A {@link BuiltWithClient} with methods for each BuiltWith API endpoint.\n *\n * @example\n * ```ts\n * import { createClient } from \"builtwith-api\";\n *\n * const client = createClient(process.env.BUILTWITH_API_KEY!);\n *\n * // Free lookup\n * const profile = await client.free(\"example.com\");\n *\n * // Domain lookup with filters\n * const details = await client.domain(\"example.com\", {\n * onlyLiveTechnologies: true,\n * });\n *\n * // Multi-domain lookup\n * const multi = await client.domain([\"example.com\", \"other.com\"]);\n * ```\n */\nexport function createClient(apiKey: string, moduleParams: ClientOptions = {}): BuiltWithClient {\n if (!apiKey) {\n throw new Error(\"You must initialize the BuiltWith module with an api key\");\n }\n\n const parsed = ClientOptionsSchema.parse(moduleParams);\n const format: ResponseFormat = parsed.responseFormat || \"json\";\n\n if (format === VALID_RESPONSE_TYPES.TXT) {\n console.warn(\n \"TXT response format is only supported for the BuiltWith Lists API. See: https://api.builtwith.com/lists-api\",\n );\n }\n\n const url = (path: string, params: QueryParams) => buildURL(apiKey, format, path, params);\n const get = <T>(bwURL: string, schema: import(\"zod/v4\").ZodType<T>) => request(bwURL, format, schema);\n const getSafe = <T>(bwURL: string, schema: import(\"zod/v4\").ZodType<T>) => requestSafe(bwURL, format, schema);\n\n return {\n free: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"free1\", { LOOKUP: lookup }), FreeResponseSchema);\n },\n\n domain: async (lookup: string | string[], params?: DomainParams) => {\n validateLookup(lookup, { multi: true });\n if (params) DomainParamsSchema.parse(params);\n return get(\n url(\"v22\", {\n LOOKUP: Array.isArray(lookup) ? lookup.join(\",\") : lookup,\n ...booleanParams(params, DOMAIN_BOOLEANS),\n FDRANGE: params?.firstDetectedRange,\n LDRANGE: params?.lastDetectedRange,\n }),\n DomainResponseSchema,\n );\n },\n\n lists: async (technology: string, params?: ListsParams) => {\n if (params) ListsParamsSchema.parse(params);\n return getSafe(\n url(\"lists12\", {\n TECH: technology,\n META: params?.includeMetaData ? \"yes\" : undefined,\n OFFSET: params?.offset,\n SINCE: params?.since,\n }),\n ListsResponseSchema,\n );\n },\n\n relationships: async (lookup: string | string[]) => {\n validateLookup(lookup, { multi: true });\n return get(\n url(\"rv4\", {\n LOOKUP: Array.isArray(lookup) ? lookup.join(\",\") : lookup,\n }),\n RelationshipsResponseSchema,\n );\n },\n\n keywords: async (lookup: string | string[]) => {\n validateLookup(lookup, { multi: true });\n return get(\n url(\"kw2\", {\n LOOKUP: Array.isArray(lookup) ? lookup.join(\",\") : lookup,\n }),\n KeywordsResponseSchema,\n );\n },\n\n trends: async (technology: string, params?: TrendsParams) => {\n if (params) TrendsParamsSchema.parse(params);\n return getSafe(\n url(\"trends/v6\", {\n TECH: technology,\n DATE: params?.date,\n }),\n TrendsResponseSchema,\n );\n },\n\n companyToUrl: async (companyName: string, params?: CompanyToUrlParams) => {\n if (params) CompanyToUrlParamsSchema.parse(params);\n return get(\n url(\"ctu3\", {\n COMPANY: companyName,\n TLD: params?.tld,\n AMOUNT: params?.amount,\n }),\n CompanyToUrlResponseSchema,\n );\n },\n\n domainLive: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"ddlv2\", { LOOKUP: lookup }), DomainResponseSchema);\n },\n\n trust: async (lookup: string, params?: TrustParams) => {\n validateLookup(lookup);\n if (params) TrustParamsSchema.parse(params);\n return get(\n url(\"trustv1\", {\n LOOKUP: lookup,\n WORDS: cleanWords(params?.words),\n LIVE: params?.live ? \"yes\" : undefined,\n }),\n TrustResponseSchema,\n );\n },\n\n tags: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"tag1\", { LOOKUP: lookup }), TagsResponseSchema);\n },\n\n recommendations: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"rec1\", { LOOKUP: lookup }), RecommendationsResponseSchema);\n },\n\n redirects: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"redirect1\", { LOOKUP: lookup }), RedirectsResponseSchema);\n },\n\n product: async (query: string) => {\n return get(url(\"productv1\", { QUERY: query }), ProductResponseSchema);\n },\n };\n}\n\nexport type {\n BooleanMapping,\n BuiltWithClient,\n ClientOptions,\n CompanyToUrlParams,\n DomainParams,\n ListsParams,\n QueryParams,\n ResponseFormat,\n TrendsParams,\n TrustParams,\n} from \"./schemas.js\";\n",
10
- "import type {\n BuiltWithClient,\n CompanyToUrlParams,\n DomainParams,\n ListsParams,\n TrendsParams,\n TrustParams,\n} from \"./schemas.js\";\n\nexport interface ArgDefinition {\n name: string;\n description: string;\n type: \"string\" | \"number\" | \"boolean\";\n required: boolean;\n}\n\nexport interface CommandDefinition {\n name: keyof BuiltWithClient;\n description: string;\n args: ArgDefinition[];\n execute: (client: BuiltWithClient, args: Record<string, unknown>) => Promise<unknown>;\n}\n\nexport function splitLookup(value: unknown): string | string[] {\n const str = String(value);\n return str.includes(\",\") ? str.split(\",\").map((s) => s.trim()) : str;\n}\n\nexport const commands: CommandDefinition[] = [\n {\n name: \"free\",\n description: \"Free lookup — basic technology profile for a domain\",\n args: [{ name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true }],\n execute: (client, args) => client.free(String(args.lookup)),\n },\n {\n name: \"domain\",\n description: \"Detailed technology profile for one or more domains (comma-separated)\",\n args: [\n {\n name: \"lookup\",\n description: \"Domain(s) to look up (comma-separated for multiple)\",\n type: \"string\",\n required: true,\n },\n { name: \"hideAll\", description: \"Hide description text and links\", type: \"boolean\", required: false },\n {\n name: \"hideDescriptionAndLinks\",\n description: \"Hide description and links only\",\n type: \"boolean\",\n required: false,\n },\n { name: \"onlyLiveTechnologies\", description: \"Only return live technologies\", type: \"boolean\", required: false },\n { name: \"noMetaData\", description: \"Exclude metadata\", type: \"boolean\", required: false },\n { name: \"noAttributeData\", description: \"Exclude attribute data\", type: \"boolean\", required: false },\n { name: \"noPII\", description: \"Exclude personally identifiable information\", type: \"boolean\", required: false },\n {\n name: \"firstDetectedRange\",\n description: \"Filter by first detected date range\",\n type: \"string\",\n required: false,\n },\n { name: \"lastDetectedRange\", description: \"Filter by last detected date range\", type: \"string\", required: false },\n ],\n execute: (client, args) => {\n const lookup = splitLookup(args.lookup);\n const { lookup: _, ...params } = args;\n return client.domain(lookup, Object.keys(params).length > 0 ? (params as DomainParams) : undefined);\n },\n },\n {\n name: \"lists\",\n description: \"List domains using a specific technology\",\n args: [\n { name: \"technology\", description: \"Technology name to search for\", type: \"string\", required: true },\n { name: \"includeMetaData\", description: \"Include metadata in results\", type: \"boolean\", required: false },\n { name: \"offset\", description: \"Pagination offset\", type: \"string\", required: false },\n { name: \"since\", description: \"Only return results since this date\", type: \"string\", required: false },\n ],\n execute: (client, args) => {\n const { technology, ...params } = args;\n return client.lists(String(technology), Object.keys(params).length > 0 ? (params as ListsParams) : undefined);\n },\n },\n {\n name: \"relationships\",\n description: \"Find related domains via shared identifiers\",\n args: [\n {\n name: \"lookup\",\n description: \"Domain(s) to look up (comma-separated for multiple)\",\n type: \"string\",\n required: true,\n },\n ],\n execute: (client, args) => client.relationships(splitLookup(args.lookup)),\n },\n {\n name: \"keywords\",\n description: \"Get keywords for one or more domains\",\n args: [\n {\n name: \"lookup\",\n description: \"Domain(s) to look up (comma-separated for multiple)\",\n type: \"string\",\n required: true,\n },\n ],\n execute: (client, args) => client.keywords(splitLookup(args.lookup)),\n },\n {\n name: \"trends\",\n description: \"Technology adoption trends\",\n args: [\n { name: \"technology\", description: \"Technology name\", type: \"string\", required: true },\n { name: \"date\", description: \"Date filter\", type: \"string\", required: false },\n ],\n execute: (client, args) => {\n const { technology, ...params } = args;\n return client.trends(String(technology), Object.keys(params).length > 0 ? (params as TrendsParams) : undefined);\n },\n },\n {\n name: \"companyToUrl\",\n description: \"Find domains associated with a company name\",\n args: [\n { name: \"companyName\", description: \"Company name to search\", type: \"string\", required: true },\n { name: \"tld\", description: \"Filter by top-level domain\", type: \"string\", required: false },\n { name: \"amount\", description: \"Number of results to return\", type: \"number\", required: false },\n ],\n execute: (client, args) => {\n const { companyName, ...params } = args;\n return client.companyToUrl(\n String(companyName),\n Object.keys(params).length > 0 ? (params as CompanyToUrlParams) : undefined,\n );\n },\n },\n {\n name: \"domainLive\",\n description: \"Live technology lookup for a domain\",\n args: [{ name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true }],\n execute: (client, args) => client.domainLive(String(args.lookup)),\n },\n {\n name: \"trust\",\n description: \"Trust/verification score for a domain\",\n args: [\n { name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true },\n { name: \"words\", description: \"Comma-separated keywords to check\", type: \"string\", required: false },\n { name: \"live\", description: \"Include live analysis\", type: \"boolean\", required: false },\n ],\n execute: (client, args) => {\n const { lookup, ...params } = args;\n return client.trust(String(lookup), Object.keys(params).length > 0 ? (params as TrustParams) : undefined);\n },\n },\n {\n name: \"tags\",\n description: \"Get tracking/analytics tags for a domain\",\n args: [{ name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true }],\n execute: (client, args) => client.tags(String(args.lookup)),\n },\n {\n name: \"recommendations\",\n description: \"Get technology recommendations for a domain\",\n args: [{ name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true }],\n execute: (client, args) => client.recommendations(String(args.lookup)),\n },\n {\n name: \"redirects\",\n description: \"Get redirect chains for a domain\",\n args: [{ name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true }],\n execute: (client, args) => client.redirects(String(args.lookup)),\n },\n {\n name: \"product\",\n description: \"Search for products across e-commerce sites\",\n args: [{ name: \"query\", description: \"Product search query\", type: \"string\", required: true }],\n execute: (client, args) => client.product(String(args.query)),\n },\n];\n",
8
+ "import { z } from \"zod/v4\";\nimport { VALID_RESPONSE_TYPES } from \"./config.js\";\nimport type { ResponseFormat } from \"./schemas.js\";\n\nconst TEXT_FORMATS: readonly ResponseFormat[] = [\n VALID_RESPONSE_TYPES.TXT,\n VALID_RESPONSE_TYPES.XML,\n VALID_RESPONSE_TYPES.CSV,\n VALID_RESPONSE_TYPES.TSV,\n];\n\nconst ApiErrorSchema = z.object({\n Errors: z.array(z.object({ Message: z.string() })),\n});\n\nfunction checkForApiError(data: unknown): void {\n const parsed = ApiErrorSchema.safeParse(data);\n if (parsed.success && parsed.data.Errors.length > 0) {\n const messages = parsed.data.Errors.map((e) => e.Message).join(\"; \");\n throw new Error(`BuiltWith API error: ${messages}`);\n }\n}\n\nexport const request = async <T>(url: string, format: ResponseFormat, schema: z.ZodType<T>): Promise<T | string> => {\n const res = await fetch(url);\n if (!res.ok) {\n const body = await res.text();\n throw new Error(`BuiltWith API error ${res.status}: ${body}`);\n }\n if (TEXT_FORMATS.includes(format)) {\n return res.text();\n }\n const raw = await res.text();\n let data: unknown;\n try {\n data = JSON.parse(raw);\n } catch {\n throw new Error(`BuiltWith returned invalid JSON: ${raw.slice(0, 200)}`);\n }\n checkForApiError(data);\n return schema.parse(data);\n};\n\nexport const requestSafe = async <T>(\n url: string,\n format: ResponseFormat,\n schema: z.ZodType<T>,\n): Promise<T | string> => {\n const res = await fetch(url);\n if (!res.ok) {\n const body = await res.text();\n throw new Error(`BuiltWith API error ${res.status}: ${body}`);\n }\n if (TEXT_FORMATS.includes(format)) {\n return res.text();\n }\n const raw = await res.text();\n let data: unknown;\n try {\n data = JSON.parse(raw);\n } catch {\n console.warn(\"BuiltWith sent an invalid JSON payload. Falling back to text parsing.\");\n return raw;\n }\n checkForApiError(data);\n return schema.parse(data);\n};\n",
9
+ "import { VALID_RESPONSE_TYPES } from \"./config.js\";\nimport { booleanParams, buildURL, cleanWords, validateLookup } from \"./params.js\";\nimport { request, requestSafe } from \"./request.js\";\nimport type {\n BooleanMapping,\n BuiltWithClient,\n ClientOptions,\n CompanyToUrlParams,\n DomainParams,\n ListsParams,\n QueryParams,\n ResponseFormat,\n TrendsParams,\n TrustParams,\n} from \"./schemas.js\";\nimport {\n ClientOptionsSchema,\n CompanyToUrlParamsSchema,\n CompanyToUrlResponseSchema,\n DomainParamsSchema,\n DomainResponseSchema,\n FreeResponseSchema,\n KeywordsResponseSchema,\n ListsParamsSchema,\n ListsResponseSchema,\n ProductResponseSchema,\n RecommendationsResponseSchema,\n RedirectsResponseSchema,\n RelationshipsResponseSchema,\n TagsResponseSchema,\n TrendsParamsSchema,\n TrendsResponseSchema,\n TrustParamsSchema,\n TrustResponseSchema,\n} from \"./schemas.js\";\n\nconst DOMAIN_BOOLEANS: BooleanMapping = {\n hideAll: \"HIDETEXT\",\n hideDescriptionAndLinks: \"HIDEDL\",\n onlyLiveTechnologies: \"LIVEONLY\",\n noMetaData: \"NOMETA\",\n noAttributeData: \"NOATTR\",\n noPII: \"NOPII\",\n includeTrust: \"TRUST\",\n};\n\n/**\n * Create a BuiltWith API client.\n *\n * @param apiKey - Your BuiltWith API key.\n * @param moduleParams - Optional client configuration (e.g. response format).\n * @returns A {@link BuiltWithClient} with methods for each BuiltWith API endpoint.\n *\n * @example\n * ```ts\n * import { createClient } from \"builtwith-api\";\n *\n * const client = createClient(process.env.BUILTWITH_API_KEY!);\n *\n * // Free lookup\n * const profile = await client.free(\"example.com\");\n *\n * // Domain lookup with filters\n * const details = await client.domain(\"example.com\", {\n * onlyLiveTechnologies: true,\n * });\n *\n * // Multi-domain lookup\n * const multi = await client.domain([\"example.com\", \"other.com\"]);\n * ```\n */\nexport function createClient(apiKey: string, moduleParams: ClientOptions = {}): BuiltWithClient {\n if (!apiKey) {\n throw new Error(\"You must initialize the BuiltWith module with an api key\");\n }\n\n const parsed = ClientOptionsSchema.parse(moduleParams);\n const format: ResponseFormat = parsed.responseFormat || \"json\";\n\n if (format === VALID_RESPONSE_TYPES.TXT) {\n console.warn(\n \"TXT response format is only supported for the BuiltWith Lists API. See: https://api.builtwith.com/lists-api\",\n );\n }\n\n const url = (path: string, params: QueryParams) => buildURL(apiKey, format, path, params);\n const get = <T>(bwURL: string, schema: import(\"zod/v4\").ZodType<T>) => request(bwURL, format, schema);\n const getSafe = <T>(bwURL: string, schema: import(\"zod/v4\").ZodType<T>) => requestSafe(bwURL, format, schema);\n\n return {\n free: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"free1\", { LOOKUP: lookup }), FreeResponseSchema);\n },\n\n domain: async (lookup: string | string[], params?: DomainParams) => {\n validateLookup(lookup, { multi: true });\n if (params) DomainParamsSchema.parse(params);\n return get(\n url(\"v23\", {\n LOOKUP: Array.isArray(lookup) ? lookup.join(\",\") : lookup,\n ...booleanParams(params, DOMAIN_BOOLEANS),\n FDRANGE: params?.firstDetectedRange,\n LDRANGE: params?.lastDetectedRange,\n }),\n DomainResponseSchema,\n );\n },\n\n lists: async (technology: string, params?: ListsParams) => {\n if (params) ListsParamsSchema.parse(params);\n return getSafe(\n url(\"lists12\", {\n TECH: technology,\n META: params?.includeMetaData ? \"yes\" : undefined,\n OFFSET: params?.offset,\n SINCE: params?.since,\n }),\n ListsResponseSchema,\n );\n },\n\n relationships: async (lookup: string | string[]) => {\n validateLookup(lookup, { multi: true });\n return get(\n url(\"rv4\", {\n LOOKUP: Array.isArray(lookup) ? lookup.join(\",\") : lookup,\n }),\n RelationshipsResponseSchema,\n );\n },\n\n keywords: async (lookup: string | string[]) => {\n validateLookup(lookup, { multi: true });\n return get(\n url(\"kw2\", {\n LOOKUP: Array.isArray(lookup) ? lookup.join(\",\") : lookup,\n }),\n KeywordsResponseSchema,\n );\n },\n\n trends: async (technology: string, params?: TrendsParams) => {\n if (params) TrendsParamsSchema.parse(params);\n return getSafe(\n url(\"trends/v6\", {\n TECH: technology,\n DATE: params?.date,\n }),\n TrendsResponseSchema,\n );\n },\n\n companyToUrl: async (companyName: string, params?: CompanyToUrlParams) => {\n if (params) CompanyToUrlParamsSchema.parse(params);\n return get(\n url(\"ctu3\", {\n COMPANY: companyName,\n TLD: params?.tld,\n AMOUNT: params?.amount,\n }),\n CompanyToUrlResponseSchema,\n );\n },\n\n domainLive: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"ddlv2\", { LOOKUP: lookup }), DomainResponseSchema);\n },\n\n trust: async (lookup: string, params?: TrustParams) => {\n validateLookup(lookup);\n if (params) TrustParamsSchema.parse(params);\n return get(\n url(\"trustv1\", {\n LOOKUP: lookup,\n WORDS: cleanWords(params?.words),\n LIVE: params?.live ? \"yes\" : undefined,\n }),\n TrustResponseSchema,\n );\n },\n\n tags: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"tag1\", { LOOKUP: lookup }), TagsResponseSchema);\n },\n\n recommendations: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"rec1\", { LOOKUP: lookup }), RecommendationsResponseSchema);\n },\n\n redirects: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"redirect1\", { LOOKUP: lookup }), RedirectsResponseSchema);\n },\n\n product: async (query: string) => {\n return get(url(\"productv1\", { QUERY: query }), ProductResponseSchema);\n },\n };\n}\n\nexport type {\n BooleanMapping,\n BuiltWithClient,\n ClientOptions,\n CompanyToUrlParams,\n DomainParams,\n ListsParams,\n QueryParams,\n ResponseFormat,\n TrendsParams,\n TrustParams,\n} from \"./schemas.js\";\n",
10
+ "import type {\n BuiltWithClient,\n CompanyToUrlParams,\n DomainParams,\n ListsParams,\n TrendsParams,\n TrustParams,\n} from \"./schemas.js\";\n\nexport interface ArgDefinition {\n name: string;\n description: string;\n type: \"string\" | \"number\" | \"boolean\";\n required: boolean;\n}\n\nexport interface CommandDefinition {\n name: keyof BuiltWithClient;\n description: string;\n args: ArgDefinition[];\n execute: (client: BuiltWithClient, args: Record<string, unknown>) => Promise<unknown>;\n}\n\nexport function splitLookup(value: unknown): string | string[] {\n const str = String(value);\n return str.includes(\",\") ? str.split(\",\").map((s) => s.trim()) : str;\n}\n\nexport const commands: CommandDefinition[] = [\n {\n name: \"free\",\n description: \"Free lookup — basic technology profile for a domain\",\n args: [{ name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true }],\n execute: (client, args) => client.free(String(args.lookup)),\n },\n {\n name: \"domain\",\n description: \"Detailed technology profile for one or more domains (comma-separated)\",\n args: [\n {\n name: \"lookup\",\n description: \"Domain(s) to look up (comma-separated for multiple)\",\n type: \"string\",\n required: true,\n },\n { name: \"hideAll\", description: \"Hide description text and links\", type: \"boolean\", required: false },\n {\n name: \"hideDescriptionAndLinks\",\n description: \"Hide description and links only\",\n type: \"boolean\",\n required: false,\n },\n { name: \"onlyLiveTechnologies\", description: \"Only return live technologies\", type: \"boolean\", required: false },\n { name: \"noMetaData\", description: \"Exclude metadata\", type: \"boolean\", required: false },\n { name: \"noAttributeData\", description: \"Exclude attribute data\", type: \"boolean\", required: false },\n { name: \"noPII\", description: \"Exclude personally identifiable information\", type: \"boolean\", required: false },\n {\n name: \"includeTrust\",\n description: \"Include Trust API data (uses an additional API credit)\",\n type: \"boolean\",\n required: false,\n },\n {\n name: \"firstDetectedRange\",\n description: \"Filter by first detected date range (YYYY-MM-DD|YYYY-MM-DD)\",\n type: \"string\",\n required: false,\n },\n {\n name: \"lastDetectedRange\",\n description: \"Filter by last detected date range (YYYY-MM-DD|YYYY-MM-DD)\",\n type: \"string\",\n required: false,\n },\n ],\n execute: (client, args) => {\n const lookup = splitLookup(args.lookup);\n const { lookup: _, ...params } = args;\n return client.domain(lookup, Object.keys(params).length > 0 ? (params as DomainParams) : undefined);\n },\n },\n {\n name: \"lists\",\n description: \"List domains using a specific technology\",\n args: [\n { name: \"technology\", description: \"Technology name to search for\", type: \"string\", required: true },\n { name: \"includeMetaData\", description: \"Include metadata in results\", type: \"boolean\", required: false },\n { name: \"offset\", description: \"Pagination offset\", type: \"string\", required: false },\n { name: \"since\", description: \"Only return results since this date\", type: \"string\", required: false },\n ],\n execute: (client, args) => {\n const { technology, ...params } = args;\n return client.lists(String(technology), Object.keys(params).length > 0 ? (params as ListsParams) : undefined);\n },\n },\n {\n name: \"relationships\",\n description: \"Find related domains via shared identifiers\",\n args: [\n {\n name: \"lookup\",\n description: \"Domain(s) to look up (comma-separated for multiple)\",\n type: \"string\",\n required: true,\n },\n ],\n execute: (client, args) => client.relationships(splitLookup(args.lookup)),\n },\n {\n name: \"keywords\",\n description: \"Get keywords for one or more domains\",\n args: [\n {\n name: \"lookup\",\n description: \"Domain(s) to look up (comma-separated for multiple)\",\n type: \"string\",\n required: true,\n },\n ],\n execute: (client, args) => client.keywords(splitLookup(args.lookup)),\n },\n {\n name: \"trends\",\n description: \"Technology adoption trends\",\n args: [\n { name: \"technology\", description: \"Technology name\", type: \"string\", required: true },\n { name: \"date\", description: \"Date filter\", type: \"string\", required: false },\n ],\n execute: (client, args) => {\n const { technology, ...params } = args;\n return client.trends(String(technology), Object.keys(params).length > 0 ? (params as TrendsParams) : undefined);\n },\n },\n {\n name: \"companyToUrl\",\n description: \"Find domains associated with a company name\",\n args: [\n { name: \"companyName\", description: \"Company name to search\", type: \"string\", required: true },\n { name: \"tld\", description: \"Filter by top-level domain\", type: \"string\", required: false },\n { name: \"amount\", description: \"Number of results to return\", type: \"number\", required: false },\n ],\n execute: (client, args) => {\n const { companyName, ...params } = args;\n return client.companyToUrl(\n String(companyName),\n Object.keys(params).length > 0 ? (params as CompanyToUrlParams) : undefined,\n );\n },\n },\n {\n name: \"domainLive\",\n description: \"Live technology lookup for a domain\",\n args: [{ name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true }],\n execute: (client, args) => client.domainLive(String(args.lookup)),\n },\n {\n name: \"trust\",\n description: \"Trust/verification score for a domain\",\n args: [\n { name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true },\n { name: \"words\", description: \"Comma-separated keywords to check\", type: \"string\", required: false },\n { name: \"live\", description: \"Include live analysis\", type: \"boolean\", required: false },\n ],\n execute: (client, args) => {\n const { lookup, ...params } = args;\n return client.trust(String(lookup), Object.keys(params).length > 0 ? (params as TrustParams) : undefined);\n },\n },\n {\n name: \"tags\",\n description: \"Get tracking/analytics tags for a domain\",\n args: [{ name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true }],\n execute: (client, args) => client.tags(String(args.lookup)),\n },\n {\n name: \"recommendations\",\n description: \"Get technology recommendations for a domain\",\n args: [{ name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true }],\n execute: (client, args) => client.recommendations(String(args.lookup)),\n },\n {\n name: \"redirects\",\n description: \"Get redirect chains for a domain\",\n args: [{ name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true }],\n execute: (client, args) => client.redirects(String(args.lookup)),\n },\n {\n name: \"product\",\n description: \"Search for products across e-commerce sites\",\n args: [{ name: \"query\", description: \"Product search query\", type: \"string\", required: true }],\n execute: (client, args) => client.product(String(args.query)),\n },\n];\n",
11
11
  "import { z } from \"zod/v4\";\n\nexport function formatError(err: unknown): string {\n if (err instanceof z.ZodError) {\n const fields = err.issues.map((i) => {\n const path = i.path.length > 0 ? i.path.join(\".\") : \"response\";\n return ` ${path}: ${i.message}`;\n });\n return `BuiltWith API returned an unexpected response:\\n${fields.join(\"\\n\")}`;\n }\n if (err instanceof Error) {\n return err.message;\n }\n return String(err);\n}\n",
12
- "#!/usr/bin/env node\nimport { createRequire } from \"node:module\";\nimport { parseArgs } from \"node:util\";\nimport { commands } from \"./commands.js\";\nimport { formatError } from \"./errors.js\";\nimport { formatTable } from \"./format.js\";\nimport { createClient } from \"./index.js\";\n\nconst require = createRequire(import.meta.url);\nconst { version } = require(\"../package.json\");\n\nconst USAGE = `Usage: builtwith <command> <primary-arg> [--flag value ...]\n\nCommands:\n${commands.map((c) => ` ${c.name.padEnd(16)} ${c.description}`).join(\"\\n\")}\n\nOptions:\n --api-key <key> BuiltWith API key (or set BUILTWITH_API_KEY env var)\n --table Pretty-print output as a readable table instead of JSON\n --version Show version number\n --help Show help\n\nExamples:\n builtwith free example.com\n builtwith free example.com --table\n builtwith domain example.com --hideAll --onlyLiveTechnologies\n builtwith domain \"example.com,other.com\"\n builtwith lists Shopify --since 2024-01-01\n builtwith trust example.com --words \"shop,buy\" --live\n`;\n\nfunction printCommandHelp(cmd: (typeof commands)[number]): void {\n const primary = cmd.args.find((a) => a.required);\n const flags = cmd.args.filter((a) => !a.required);\n console.log(`Usage: builtwith ${cmd.name} <${primary?.name ?? \"arg\"}>${flags.length ? \" [options]\" : \"\"}\\n`);\n console.log(` ${cmd.description}\\n`);\n if (flags.length) {\n console.log(\"Options:\");\n for (const f of flags) {\n console.log(` --${f.name.padEnd(28)} ${f.description} (${f.type})`);\n }\n }\n}\n\nfunction run(): void {\n const argv = process.argv.slice(2);\n\n if (argv.includes(\"--version\") || argv.includes(\"-V\")) {\n console.log(version);\n process.exit(0);\n }\n\n if (argv.length === 0 || argv[0] === \"--help\" || argv[0] === \"-h\") {\n console.log(USAGE);\n process.exit(0);\n }\n\n const commandName = argv[0];\n const cmd = commands.find((c) => c.name === commandName);\n\n if (!cmd) {\n console.error(`Unknown command: ${commandName}\\n`);\n console.log(USAGE);\n process.exit(1);\n }\n\n if (argv.includes(\"--help\") || argv.includes(\"-h\")) {\n printCommandHelp(cmd);\n process.exit(0);\n }\n\n const primaryArg = cmd.args.find((a) => a.required);\n const primaryValue = argv[1];\n\n if (primaryArg && (!primaryValue || primaryValue.startsWith(\"--\"))) {\n console.error(`Error: missing required argument <${primaryArg.name}>`);\n process.exit(1);\n }\n\n // Build parseArgs options from the command's optional flags + global --api-key\n const flagArgs = cmd.args.filter((a) => !a.required);\n const options: Record<string, { type: \"string\" | \"boolean\" }> = {\n \"api-key\": { type: \"string\" },\n table: { type: \"boolean\" },\n };\n for (const f of flagArgs) {\n options[f.name] = { type: f.type === \"boolean\" ? \"boolean\" : \"string\" };\n }\n\n const { values } = parseArgs({\n args: argv.slice(2), // skip command + primary arg\n options,\n strict: false,\n });\n\n const useTable = Boolean(values.table);\n const apiKey = (values[\"api-key\"] as string) || process.env.BUILTWITH_API_KEY;\n if (!apiKey) {\n console.error(\"Error: pass --api-key or set BUILTWITH_API_KEY environment variable.\");\n process.exit(1);\n }\n\n // Build the args record\n const args: Record<string, unknown> = {};\n if (primaryArg) {\n args[primaryArg.name] = primaryValue;\n }\n\n for (const f of flagArgs) {\n if (values[f.name] !== undefined) {\n if (f.type === \"number\") {\n args[f.name] = Number(values[f.name]);\n } else {\n args[f.name] = values[f.name];\n }\n }\n }\n\n const client = createClient(apiKey);\n cmd\n .execute(client, args)\n .then((result) => {\n if (useTable) {\n console.log(formatTable(result));\n } else {\n console.log(JSON.stringify(result, null, 2));\n }\n })\n .catch((err) => {\n console.error(formatError(err));\n process.exit(1);\n });\n}\n\nrun();\n",
13
- "export function formatTable(data: unknown, indent = 0): string {\n const pad = \" \".repeat(indent);\n if (data === null || data === undefined) return `${pad}(none)`;\n if (typeof data !== \"object\") return `${pad}${data}`;\n\n if (Array.isArray(data)) {\n if (data.length === 0) return `${pad}(empty)`;\n // If array of flat objects (all values are primitives), render as aligned columns\n const allFlatObjects = data.every(\n (item) =>\n typeof item === \"object\" &&\n item !== null &&\n !Array.isArray(item) &&\n Object.values(item as Record<string, unknown>).every((v) => v === null || typeof v !== \"object\"),\n );\n if (allFlatObjects) {\n const keys = [...new Set(data.flatMap((item) => Object.keys(item as Record<string, unknown>)))];\n const widths = keys.map((k) =>\n Math.max(k.length, ...data.map((item) => String((item as Record<string, unknown>)[k] ?? \"\").length)),\n );\n const header = keys.map((k, i) => k.padEnd(widths[i])).join(\" \");\n const separator = keys.map((_, i) => \"─\".repeat(widths[i])).join(\" \");\n const rows = data.map((item) =>\n keys.map((k, i) => String((item as Record<string, unknown>)[k] ?? \"\").padEnd(widths[i])).join(\" \"),\n );\n return [pad + header, pad + separator, ...rows.map((r) => pad + r)].join(\"\\n\");\n }\n return data.map((item, i) => `${pad}[${i}]\\n${formatTable(item, indent + 1)}`).join(\"\\n\");\n }\n\n const entries = Object.entries(data as Record<string, unknown>);\n if (entries.length === 0) return `${pad}(empty)`;\n const maxKey = Math.max(...entries.map(([k]) => k.length));\n return entries\n .map(([key, value]) => {\n if (typeof value === \"object\" && value !== null) {\n return `${pad}${key}:\\n${formatTable(value, indent + 1)}`;\n }\n return `${pad}${key.padEnd(maxKey)} ${value}`;\n })\n .join(\"\\n\");\n}\n"
12
+ "#!/usr/bin/env node\nimport { createRequire } from \"node:module\";\nimport { parseArgs } from \"node:util\";\nimport { commands } from \"./commands.js\";\nimport { formatError } from \"./errors.js\";\nimport { formatTable } from \"./format.js\";\nimport { createClient } from \"./index.js\";\n\nconst require = createRequire(import.meta.url);\nconst { version } = require(\"../package.json\");\n\nconst USAGE = `Usage: builtwith <command> <primary-arg> [--flag value ...]\n\nCommands:\n${commands.map((c) => ` ${c.name.padEnd(16)} ${c.description}`).join(\"\\n\")}\n\nOptions:\n --api-key <key> BuiltWith API key (or set BUILTWITH_API_KEY env var)\n --table Pretty-print output as a readable table instead of JSON\n --version Show version number\n --help Show help\n\nExamples:\n builtwith free example.com\n builtwith free example.com --table\n builtwith domain example.com --hideAll --onlyLiveTechnologies\n builtwith domain \"example.com,other.com\"\n builtwith lists Shopify --since 2024-01-01\n builtwith trust example.com --words \"shop,buy\" --live\n`;\n\nfunction printCommandHelp(cmd: (typeof commands)[number]): void {\n const primary = cmd.args.find((a) => a.required);\n const flags = cmd.args.filter((a) => !a.required);\n console.log(`Usage: builtwith ${cmd.name} <${primary?.name ?? \"arg\"}>${flags.length ? \" [options]\" : \"\"}\\n`);\n console.log(` ${cmd.description}\\n`);\n if (flags.length) {\n console.log(\"Options:\");\n for (const f of flags) {\n console.log(` --${f.name.padEnd(28)} ${f.description} (${f.type})`);\n }\n console.log();\n }\n console.log(\"Global options:\");\n console.log(` --api-key <key> BuiltWith API key (or set BUILTWITH_API_KEY env var)`);\n console.log(` --table Pretty-print output as a readable table instead of JSON`);\n}\n\nfunction run(): void {\n const argv = process.argv.slice(2);\n\n if (argv[0] === \"--version\" || argv[0] === \"-V\") {\n console.log(version);\n process.exit(0);\n }\n\n if (argv.length === 0 || argv[0] === \"--help\" || argv[0] === \"-h\") {\n console.log(USAGE);\n process.exit(0);\n }\n\n const commandName = argv[0];\n const cmd = commands.find((c) => c.name === commandName);\n\n if (!cmd) {\n console.error(`Unknown command: ${commandName}\\n`);\n console.log(USAGE);\n process.exit(1);\n }\n\n if (argv.includes(\"--help\") || argv.includes(\"-h\")) {\n printCommandHelp(cmd);\n process.exit(0);\n }\n\n const primaryArg = cmd.args.find((a) => a.required);\n const primaryValue = argv[1];\n\n if (primaryArg && (!primaryValue || primaryValue.startsWith(\"-\"))) {\n console.error(`Error: missing required argument <${primaryArg.name}>`);\n process.exit(1);\n }\n\n // Build parseArgs options from the command's optional flags + global --api-key\n const flagArgs = cmd.args.filter((a) => !a.required);\n const options: Record<string, { type: \"string\" | \"boolean\" }> = {\n \"api-key\": { type: \"string\" },\n table: { type: \"boolean\" },\n };\n for (const f of flagArgs) {\n options[f.name] = { type: f.type === \"boolean\" ? \"boolean\" : \"string\" };\n }\n\n let values: Record<string, unknown>;\n try {\n ({ values } = parseArgs({\n args: argv.slice(2), // skip command + primary arg\n options,\n strict: true,\n }));\n } catch (err) {\n console.error(`Error: ${err instanceof Error ? err.message : err}`);\n process.exit(1);\n }\n\n const useTable = Boolean(values.table);\n const apiKey = (values[\"api-key\"] as string) || process.env.BUILTWITH_API_KEY;\n if (!apiKey) {\n console.error(\"Error: pass --api-key or set BUILTWITH_API_KEY environment variable.\");\n process.exit(1);\n }\n\n // Build the args record\n const args: Record<string, unknown> = {};\n if (primaryArg) {\n args[primaryArg.name] = primaryValue;\n }\n\n for (const f of flagArgs) {\n if (values[f.name] !== undefined) {\n if (f.type === \"number\") {\n args[f.name] = Number(values[f.name]);\n } else {\n args[f.name] = values[f.name];\n }\n }\n }\n\n const client = createClient(apiKey);\n cmd\n .execute(client, args)\n .then((result) => {\n if (useTable) {\n console.log(formatTable(result));\n } else {\n console.log(JSON.stringify(result, null, 2));\n }\n })\n .catch((err) => {\n console.error(formatError(err));\n process.exit(1);\n });\n}\n\nrun();\n",
13
+ "export function formatTable(data: unknown, indent = 0): string {\n const pad = \" \".repeat(indent);\n if (data === null || data === undefined) return `${pad}(none)`;\n if (typeof data !== \"object\") return `${pad}${data}`;\n\n if (Array.isArray(data)) {\n if (data.length === 0) return `${pad}(empty)`;\n // If array of flat objects (all values are primitives), render as aligned columns\n const allFlatObjects = data.every(\n (item) =>\n typeof item === \"object\" &&\n item !== null &&\n !Array.isArray(item) &&\n Object.values(item as Record<string, unknown>).every((v) => v === null || typeof v !== \"object\"),\n );\n if (allFlatObjects) {\n const keys = [...new Set(data.flatMap((item) => Object.keys(item as Record<string, unknown>)))];\n if (keys.length === 0) return `${pad}(${data.length} empty items)`;\n const widths = keys.map((k) =>\n Math.max(k.length, ...data.map((item) => String((item as Record<string, unknown>)[k] ?? \"\").length)),\n );\n const header = keys.map((k, i) => k.padEnd(widths[i])).join(\" \");\n const separator = keys.map((_, i) => \"─\".repeat(widths[i])).join(\" \");\n const rows = data.map((item) =>\n keys.map((k, i) => String((item as Record<string, unknown>)[k] ?? \"\").padEnd(widths[i])).join(\" \"),\n );\n return [pad + header, pad + separator, ...rows.map((r) => pad + r)].join(\"\\n\");\n }\n return data.map((item, i) => `${pad}[${i}]\\n${formatTable(item, indent + 1)}`).join(\"\\n\");\n }\n\n const entries = Object.entries(data as Record<string, unknown>);\n if (entries.length === 0) return `${pad}(empty)`;\n const maxKey = Math.max(...entries.map(([k]) => k.length));\n return entries\n .map(([key, value]) => {\n if (typeof value === \"object\" && value !== null) {\n return `${pad}${key}:\\n${formatTable(value, indent + 1)}`;\n }\n return `${pad}${key.padEnd(maxKey)} ${value}`;\n })\n .join(\"\\n\");\n}\n"
14
14
  ],
15
- "mappings": "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",
16
- "debugId": "6C78BC6092EC44B564756E2164756E21",
15
+ "mappings": "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",
16
+ "debugId": "C4179B005364C9AB64756E2164756E21",
17
17
  "names": []
18
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAMhB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,eAAe,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,OAAO,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACvF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,CAG7D;AAED,eAAO,MAAM,QAAQ,EAAE,iBAAiB,EAyJvC,CAAC"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAMhB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,eAAe,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,OAAO,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACvF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,CAG7D;AAED,eAAO,MAAM,QAAQ,EAAE,iBAAiB,EAoKvC,CAAC"}
package/dist/commands.js CHANGED
@@ -31,13 +31,24 @@ var commands = [
31
31
  { name: "noMetaData", description: "Exclude metadata", type: "boolean", required: false },
32
32
  { name: "noAttributeData", description: "Exclude attribute data", type: "boolean", required: false },
33
33
  { name: "noPII", description: "Exclude personally identifiable information", type: "boolean", required: false },
34
+ {
35
+ name: "includeTrust",
36
+ description: "Include Trust API data (uses an additional API credit)",
37
+ type: "boolean",
38
+ required: false
39
+ },
34
40
  {
35
41
  name: "firstDetectedRange",
36
- description: "Filter by first detected date range",
42
+ description: "Filter by first detected date range (YYYY-MM-DD|YYYY-MM-DD)",
37
43
  type: "string",
38
44
  required: false
39
45
  },
40
- { name: "lastDetectedRange", description: "Filter by last detected date range", type: "string", required: false }
46
+ {
47
+ name: "lastDetectedRange",
48
+ description: "Filter by last detected date range (YYYY-MM-DD|YYYY-MM-DD)",
49
+ type: "string",
50
+ required: false
51
+ }
41
52
  ],
42
53
  execute: (client, args) => {
43
54
  const lookup = splitLookup(args.lookup);
@@ -159,4 +170,4 @@ export {
159
170
  commands
160
171
  };
161
172
 
162
- //# debugId=A80383DA98C3828564756E2164756E21
173
+ //# debugId=74BEE016D08E052A64756E2164756E21
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/commands.ts"],
4
4
  "sourcesContent": [
5
- "import type {\n BuiltWithClient,\n CompanyToUrlParams,\n DomainParams,\n ListsParams,\n TrendsParams,\n TrustParams,\n} from \"./schemas.js\";\n\nexport interface ArgDefinition {\n name: string;\n description: string;\n type: \"string\" | \"number\" | \"boolean\";\n required: boolean;\n}\n\nexport interface CommandDefinition {\n name: keyof BuiltWithClient;\n description: string;\n args: ArgDefinition[];\n execute: (client: BuiltWithClient, args: Record<string, unknown>) => Promise<unknown>;\n}\n\nexport function splitLookup(value: unknown): string | string[] {\n const str = String(value);\n return str.includes(\",\") ? str.split(\",\").map((s) => s.trim()) : str;\n}\n\nexport const commands: CommandDefinition[] = [\n {\n name: \"free\",\n description: \"Free lookup — basic technology profile for a domain\",\n args: [{ name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true }],\n execute: (client, args) => client.free(String(args.lookup)),\n },\n {\n name: \"domain\",\n description: \"Detailed technology profile for one or more domains (comma-separated)\",\n args: [\n {\n name: \"lookup\",\n description: \"Domain(s) to look up (comma-separated for multiple)\",\n type: \"string\",\n required: true,\n },\n { name: \"hideAll\", description: \"Hide description text and links\", type: \"boolean\", required: false },\n {\n name: \"hideDescriptionAndLinks\",\n description: \"Hide description and links only\",\n type: \"boolean\",\n required: false,\n },\n { name: \"onlyLiveTechnologies\", description: \"Only return live technologies\", type: \"boolean\", required: false },\n { name: \"noMetaData\", description: \"Exclude metadata\", type: \"boolean\", required: false },\n { name: \"noAttributeData\", description: \"Exclude attribute data\", type: \"boolean\", required: false },\n { name: \"noPII\", description: \"Exclude personally identifiable information\", type: \"boolean\", required: false },\n {\n name: \"firstDetectedRange\",\n description: \"Filter by first detected date range\",\n type: \"string\",\n required: false,\n },\n { name: \"lastDetectedRange\", description: \"Filter by last detected date range\", type: \"string\", required: false },\n ],\n execute: (client, args) => {\n const lookup = splitLookup(args.lookup);\n const { lookup: _, ...params } = args;\n return client.domain(lookup, Object.keys(params).length > 0 ? (params as DomainParams) : undefined);\n },\n },\n {\n name: \"lists\",\n description: \"List domains using a specific technology\",\n args: [\n { name: \"technology\", description: \"Technology name to search for\", type: \"string\", required: true },\n { name: \"includeMetaData\", description: \"Include metadata in results\", type: \"boolean\", required: false },\n { name: \"offset\", description: \"Pagination offset\", type: \"string\", required: false },\n { name: \"since\", description: \"Only return results since this date\", type: \"string\", required: false },\n ],\n execute: (client, args) => {\n const { technology, ...params } = args;\n return client.lists(String(technology), Object.keys(params).length > 0 ? (params as ListsParams) : undefined);\n },\n },\n {\n name: \"relationships\",\n description: \"Find related domains via shared identifiers\",\n args: [\n {\n name: \"lookup\",\n description: \"Domain(s) to look up (comma-separated for multiple)\",\n type: \"string\",\n required: true,\n },\n ],\n execute: (client, args) => client.relationships(splitLookup(args.lookup)),\n },\n {\n name: \"keywords\",\n description: \"Get keywords for one or more domains\",\n args: [\n {\n name: \"lookup\",\n description: \"Domain(s) to look up (comma-separated for multiple)\",\n type: \"string\",\n required: true,\n },\n ],\n execute: (client, args) => client.keywords(splitLookup(args.lookup)),\n },\n {\n name: \"trends\",\n description: \"Technology adoption trends\",\n args: [\n { name: \"technology\", description: \"Technology name\", type: \"string\", required: true },\n { name: \"date\", description: \"Date filter\", type: \"string\", required: false },\n ],\n execute: (client, args) => {\n const { technology, ...params } = args;\n return client.trends(String(technology), Object.keys(params).length > 0 ? (params as TrendsParams) : undefined);\n },\n },\n {\n name: \"companyToUrl\",\n description: \"Find domains associated with a company name\",\n args: [\n { name: \"companyName\", description: \"Company name to search\", type: \"string\", required: true },\n { name: \"tld\", description: \"Filter by top-level domain\", type: \"string\", required: false },\n { name: \"amount\", description: \"Number of results to return\", type: \"number\", required: false },\n ],\n execute: (client, args) => {\n const { companyName, ...params } = args;\n return client.companyToUrl(\n String(companyName),\n Object.keys(params).length > 0 ? (params as CompanyToUrlParams) : undefined,\n );\n },\n },\n {\n name: \"domainLive\",\n description: \"Live technology lookup for a domain\",\n args: [{ name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true }],\n execute: (client, args) => client.domainLive(String(args.lookup)),\n },\n {\n name: \"trust\",\n description: \"Trust/verification score for a domain\",\n args: [\n { name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true },\n { name: \"words\", description: \"Comma-separated keywords to check\", type: \"string\", required: false },\n { name: \"live\", description: \"Include live analysis\", type: \"boolean\", required: false },\n ],\n execute: (client, args) => {\n const { lookup, ...params } = args;\n return client.trust(String(lookup), Object.keys(params).length > 0 ? (params as TrustParams) : undefined);\n },\n },\n {\n name: \"tags\",\n description: \"Get tracking/analytics tags for a domain\",\n args: [{ name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true }],\n execute: (client, args) => client.tags(String(args.lookup)),\n },\n {\n name: \"recommendations\",\n description: \"Get technology recommendations for a domain\",\n args: [{ name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true }],\n execute: (client, args) => client.recommendations(String(args.lookup)),\n },\n {\n name: \"redirects\",\n description: \"Get redirect chains for a domain\",\n args: [{ name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true }],\n execute: (client, args) => client.redirects(String(args.lookup)),\n },\n {\n name: \"product\",\n description: \"Search for products across e-commerce sites\",\n args: [{ name: \"query\", description: \"Product search query\", type: \"string\", required: true }],\n execute: (client, args) => client.product(String(args.query)),\n },\n];\n"
5
+ "import type {\n BuiltWithClient,\n CompanyToUrlParams,\n DomainParams,\n ListsParams,\n TrendsParams,\n TrustParams,\n} from \"./schemas.js\";\n\nexport interface ArgDefinition {\n name: string;\n description: string;\n type: \"string\" | \"number\" | \"boolean\";\n required: boolean;\n}\n\nexport interface CommandDefinition {\n name: keyof BuiltWithClient;\n description: string;\n args: ArgDefinition[];\n execute: (client: BuiltWithClient, args: Record<string, unknown>) => Promise<unknown>;\n}\n\nexport function splitLookup(value: unknown): string | string[] {\n const str = String(value);\n return str.includes(\",\") ? str.split(\",\").map((s) => s.trim()) : str;\n}\n\nexport const commands: CommandDefinition[] = [\n {\n name: \"free\",\n description: \"Free lookup — basic technology profile for a domain\",\n args: [{ name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true }],\n execute: (client, args) => client.free(String(args.lookup)),\n },\n {\n name: \"domain\",\n description: \"Detailed technology profile for one or more domains (comma-separated)\",\n args: [\n {\n name: \"lookup\",\n description: \"Domain(s) to look up (comma-separated for multiple)\",\n type: \"string\",\n required: true,\n },\n { name: \"hideAll\", description: \"Hide description text and links\", type: \"boolean\", required: false },\n {\n name: \"hideDescriptionAndLinks\",\n description: \"Hide description and links only\",\n type: \"boolean\",\n required: false,\n },\n { name: \"onlyLiveTechnologies\", description: \"Only return live technologies\", type: \"boolean\", required: false },\n { name: \"noMetaData\", description: \"Exclude metadata\", type: \"boolean\", required: false },\n { name: \"noAttributeData\", description: \"Exclude attribute data\", type: \"boolean\", required: false },\n { name: \"noPII\", description: \"Exclude personally identifiable information\", type: \"boolean\", required: false },\n {\n name: \"includeTrust\",\n description: \"Include Trust API data (uses an additional API credit)\",\n type: \"boolean\",\n required: false,\n },\n {\n name: \"firstDetectedRange\",\n description: \"Filter by first detected date range (YYYY-MM-DD|YYYY-MM-DD)\",\n type: \"string\",\n required: false,\n },\n {\n name: \"lastDetectedRange\",\n description: \"Filter by last detected date range (YYYY-MM-DD|YYYY-MM-DD)\",\n type: \"string\",\n required: false,\n },\n ],\n execute: (client, args) => {\n const lookup = splitLookup(args.lookup);\n const { lookup: _, ...params } = args;\n return client.domain(lookup, Object.keys(params).length > 0 ? (params as DomainParams) : undefined);\n },\n },\n {\n name: \"lists\",\n description: \"List domains using a specific technology\",\n args: [\n { name: \"technology\", description: \"Technology name to search for\", type: \"string\", required: true },\n { name: \"includeMetaData\", description: \"Include metadata in results\", type: \"boolean\", required: false },\n { name: \"offset\", description: \"Pagination offset\", type: \"string\", required: false },\n { name: \"since\", description: \"Only return results since this date\", type: \"string\", required: false },\n ],\n execute: (client, args) => {\n const { technology, ...params } = args;\n return client.lists(String(technology), Object.keys(params).length > 0 ? (params as ListsParams) : undefined);\n },\n },\n {\n name: \"relationships\",\n description: \"Find related domains via shared identifiers\",\n args: [\n {\n name: \"lookup\",\n description: \"Domain(s) to look up (comma-separated for multiple)\",\n type: \"string\",\n required: true,\n },\n ],\n execute: (client, args) => client.relationships(splitLookup(args.lookup)),\n },\n {\n name: \"keywords\",\n description: \"Get keywords for one or more domains\",\n args: [\n {\n name: \"lookup\",\n description: \"Domain(s) to look up (comma-separated for multiple)\",\n type: \"string\",\n required: true,\n },\n ],\n execute: (client, args) => client.keywords(splitLookup(args.lookup)),\n },\n {\n name: \"trends\",\n description: \"Technology adoption trends\",\n args: [\n { name: \"technology\", description: \"Technology name\", type: \"string\", required: true },\n { name: \"date\", description: \"Date filter\", type: \"string\", required: false },\n ],\n execute: (client, args) => {\n const { technology, ...params } = args;\n return client.trends(String(technology), Object.keys(params).length > 0 ? (params as TrendsParams) : undefined);\n },\n },\n {\n name: \"companyToUrl\",\n description: \"Find domains associated with a company name\",\n args: [\n { name: \"companyName\", description: \"Company name to search\", type: \"string\", required: true },\n { name: \"tld\", description: \"Filter by top-level domain\", type: \"string\", required: false },\n { name: \"amount\", description: \"Number of results to return\", type: \"number\", required: false },\n ],\n execute: (client, args) => {\n const { companyName, ...params } = args;\n return client.companyToUrl(\n String(companyName),\n Object.keys(params).length > 0 ? (params as CompanyToUrlParams) : undefined,\n );\n },\n },\n {\n name: \"domainLive\",\n description: \"Live technology lookup for a domain\",\n args: [{ name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true }],\n execute: (client, args) => client.domainLive(String(args.lookup)),\n },\n {\n name: \"trust\",\n description: \"Trust/verification score for a domain\",\n args: [\n { name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true },\n { name: \"words\", description: \"Comma-separated keywords to check\", type: \"string\", required: false },\n { name: \"live\", description: \"Include live analysis\", type: \"boolean\", required: false },\n ],\n execute: (client, args) => {\n const { lookup, ...params } = args;\n return client.trust(String(lookup), Object.keys(params).length > 0 ? (params as TrustParams) : undefined);\n },\n },\n {\n name: \"tags\",\n description: \"Get tracking/analytics tags for a domain\",\n args: [{ name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true }],\n execute: (client, args) => client.tags(String(args.lookup)),\n },\n {\n name: \"recommendations\",\n description: \"Get technology recommendations for a domain\",\n args: [{ name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true }],\n execute: (client, args) => client.recommendations(String(args.lookup)),\n },\n {\n name: \"redirects\",\n description: \"Get redirect chains for a domain\",\n args: [{ name: \"lookup\", description: \"Domain to look up\", type: \"string\", required: true }],\n execute: (client, args) => client.redirects(String(args.lookup)),\n },\n {\n name: \"product\",\n description: \"Search for products across e-commerce sites\",\n args: [{ name: \"query\", description: \"Product search query\", type: \"string\", required: true }],\n execute: (client, args) => client.product(String(args.query)),\n },\n];\n"
6
6
  ],
7
- "mappings": "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",
8
- "debugId": "A80383DA98C3828564756E2164756E21",
7
+ "mappings": "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",
8
+ "debugId": "74BEE016D08E052A64756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,SAAI,GAAG,MAAM,CAyC7D"}
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,SAAI,GAAG,MAAM,CA0C7D"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,eAAe,EACf,aAAa,EAQd,MAAM,cAAc,CAAC;AA+BtB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,GAAE,aAAkB,GAAG,eAAe,CAmI9F;AAED,YAAY,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,WAAW,EACX,cAAc,EACd,YAAY,EACZ,WAAW,GACZ,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,eAAe,EACf,aAAa,EAQd,MAAM,cAAc,CAAC;AAgCtB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,GAAE,aAAkB,GAAG,eAAe,CAmI9F;AAED,YAAY,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,WAAW,EACX,cAAc,EACd,YAAY,EACZ,WAAW,GACZ,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ var ResponseFormatSchema = z.enum(["xml", "json", "txt", "csv", "tsv"]);
13
13
  var ClientOptionsSchema = z.strictObject({
14
14
  responseFormat: ResponseFormatSchema.optional()
15
15
  });
16
- var dateRangePattern = /^\d{4}-\d{2}-\d{2}(-\d{4}-\d{2}-\d{2})?$/;
16
+ var dateRangePattern = /^\d{4}-\d{2}-\d{2}(\|\d{4}-\d{2}-\d{2})?$/;
17
17
  var DomainParamsSchema = z.strictObject({
18
18
  hideAll: z.boolean().optional(),
19
19
  hideDescriptionAndLinks: z.boolean().optional(),
@@ -21,8 +21,9 @@ var DomainParamsSchema = z.strictObject({
21
21
  noMetaData: z.boolean().optional(),
22
22
  noAttributeData: z.boolean().optional(),
23
23
  noPII: z.boolean().optional(),
24
- firstDetectedRange: z.string().regex(dateRangePattern, "Expected YYYY-MM-DD or YYYY-MM-DD-YYYY-MM-DD").optional(),
25
- lastDetectedRange: z.string().regex(dateRangePattern, "Expected YYYY-MM-DD or YYYY-MM-DD-YYYY-MM-DD").optional()
24
+ includeTrust: z.boolean().optional(),
25
+ firstDetectedRange: z.string().regex(dateRangePattern, "Expected YYYY-MM-DD or YYYY-MM-DD|YYYY-MM-DD").optional(),
26
+ lastDetectedRange: z.string().regex(dateRangePattern, "Expected YYYY-MM-DD or YYYY-MM-DD|YYYY-MM-DD").optional()
26
27
  });
27
28
  var ListsParamsSchema = z.strictObject({
28
29
  includeMetaData: z.boolean().optional(),
@@ -62,6 +63,7 @@ var FreeResponseSchema = z.strictObject({
62
63
  }))
63
64
  });
64
65
  var TechnologySchema = z.strictObject({
66
+ Id: z.number(),
65
67
  Name: z.string(),
66
68
  Description: z.string(),
67
69
  Link: z.string(),
@@ -82,8 +84,9 @@ var PathSchema = z.strictObject({
82
84
  });
83
85
  var MetaSchema = z.strictObject({
84
86
  Majestic: z.number(),
87
+ Umbrella: z.number().optional(),
85
88
  Vertical: z.string(),
86
- Social: z.array(z.string()),
89
+ Social: z.array(z.string()).optional(),
87
90
  CompanyName: z.string(),
88
91
  Telephones: z.array(z.string()),
89
92
  Emails: z.array(z.string()),
@@ -112,7 +115,22 @@ var AttributesSchema = z.strictObject({
112
115
  AdobeTags: z.number(),
113
116
  CDimensions: z.number(),
114
117
  CGoals: z.number(),
115
- CMetrics: z.number()
118
+ CMetrics: z.number(),
119
+ Followers: z.number().optional(),
120
+ Employees: z.number().optional(),
121
+ ProductCount: z.number().optional(),
122
+ Revenue: z.number().optional(),
123
+ PageRank: z.number().optional(),
124
+ BWRank: z.number().optional(),
125
+ Tranco: z.number().optional(),
126
+ BWS: z.number().optional(),
127
+ EcommerceCategory: z.number().optional(),
128
+ TTFB: z.number().optional(),
129
+ SourceBytes: z.number().optional(),
130
+ AIMaturity: z.number().optional(),
131
+ AIOpenness: z.number().optional(),
132
+ AIReadiness: z.number().optional(),
133
+ AIVisibility: z.number().optional()
116
134
  });
117
135
  var DomainResponseSchema = z.strictObject({
118
136
  Results: z.array(z.strictObject({
@@ -317,12 +335,23 @@ var validateLookup = (url, { multi = false } = {}) => {
317
335
  };
318
336
 
319
337
  // src/request.ts
338
+ import { z as z2 } from "zod/v4";
320
339
  var TEXT_FORMATS = [
321
340
  VALID_RESPONSE_TYPES.TXT,
322
341
  VALID_RESPONSE_TYPES.XML,
323
342
  VALID_RESPONSE_TYPES.CSV,
324
343
  VALID_RESPONSE_TYPES.TSV
325
344
  ];
345
+ var ApiErrorSchema = z2.object({
346
+ Errors: z2.array(z2.object({ Message: z2.string() }))
347
+ });
348
+ function checkForApiError(data) {
349
+ const parsed = ApiErrorSchema.safeParse(data);
350
+ if (parsed.success && parsed.data.Errors.length > 0) {
351
+ const messages = parsed.data.Errors.map((e) => e.Message).join("; ");
352
+ throw new Error(`BuiltWith API error: ${messages}`);
353
+ }
354
+ }
326
355
  var request = async (url, format, schema) => {
327
356
  const res = await fetch(url);
328
357
  if (!res.ok) {
@@ -332,7 +361,14 @@ var request = async (url, format, schema) => {
332
361
  if (TEXT_FORMATS.includes(format)) {
333
362
  return res.text();
334
363
  }
335
- const data = await res.json();
364
+ const raw = await res.text();
365
+ let data;
366
+ try {
367
+ data = JSON.parse(raw);
368
+ } catch {
369
+ throw new Error(`BuiltWith returned invalid JSON: ${raw.slice(0, 200)}`);
370
+ }
371
+ checkForApiError(data);
336
372
  return schema.parse(data);
337
373
  };
338
374
  var requestSafe = async (url, format, schema) => {
@@ -352,6 +388,7 @@ var requestSafe = async (url, format, schema) => {
352
388
  console.warn("BuiltWith sent an invalid JSON payload. Falling back to text parsing.");
353
389
  return raw;
354
390
  }
391
+ checkForApiError(data);
355
392
  return schema.parse(data);
356
393
  };
357
394
 
@@ -362,7 +399,8 @@ var DOMAIN_BOOLEANS = {
362
399
  onlyLiveTechnologies: "LIVEONLY",
363
400
  noMetaData: "NOMETA",
364
401
  noAttributeData: "NOATTR",
365
- noPII: "NOPII"
402
+ noPII: "NOPII",
403
+ includeTrust: "TRUST"
366
404
  };
367
405
  function createClient(apiKey, moduleParams = {}) {
368
406
  if (!apiKey) {
@@ -385,7 +423,7 @@ function createClient(apiKey, moduleParams = {}) {
385
423
  validateLookup(lookup, { multi: true });
386
424
  if (params)
387
425
  DomainParamsSchema.parse(params);
388
- return get(url("v22", {
426
+ return get(url("v23", {
389
427
  LOOKUP: Array.isArray(lookup) ? lookup.join(",") : lookup,
390
428
  ...booleanParams(params, DOMAIN_BOOLEANS),
391
429
  FDRANGE: params?.firstDetectedRange,
@@ -466,4 +504,4 @@ export {
466
504
  createClient
467
505
  };
468
506
 
469
- //# debugId=4FAA4EF09F1A022A64756E2164756E21
507
+ //# debugId=C31144578E6E139464756E2164756E21
package/dist/index.js.map CHANGED
@@ -3,12 +3,12 @@
3
3
  "sources": ["../src/config.ts", "../src/schemas.ts", "../src/params.ts", "../src/request.ts", "../src/index.ts"],
4
4
  "sourcesContent": [
5
5
  "import type { ResponseFormat } from \"./schemas.js\";\n\nexport const VALID_RESPONSE_TYPES = {\n XML: \"xml\",\n JSON: \"json\",\n TXT: \"txt\",\n CSV: \"csv\",\n TSV: \"tsv\",\n} as const satisfies Record<string, ResponseFormat>;\n",
6
- "import { z } from \"zod/v4\";\n\n// ─── Input Schemas ───────────────────────────────────────────────────────────\n\n/** Supported API response formats. */\nexport const ResponseFormatSchema = z.enum([\"xml\", \"json\", \"txt\", \"csv\", \"tsv\"]);\n/**\n * Response format returned by the BuiltWith API.\n *\n * - `\"json\"` — parsed and validated (default)\n * - `\"xml\"` / `\"txt\"` / `\"csv\"` / `\"tsv\"` — returned as raw strings\n */\nexport type ResponseFormat = z.infer<typeof ResponseFormatSchema>;\n\n/** Validation schema for {@link ClientOptions}. */\nexport const ClientOptionsSchema = z.strictObject({\n responseFormat: ResponseFormatSchema.optional(),\n});\n/**\n * Options passed to `createClient`.\n *\n * @example\n * ```ts\n * const client = createClient(API_KEY, { responseFormat: \"xml\" });\n * ```\n */\nexport type ClientOptions = z.infer<typeof ClientOptionsSchema>;\n\n/** Matches YYYY-MM-DD or YYYY-MM-DD-YYYY-MM-DD date range format. */\nconst dateRangePattern = /^\\d{4}-\\d{2}-\\d{2}(-\\d{4}-\\d{2}-\\d{2})?$/;\n\n/** Validation schema for {@link DomainParams}. */\nexport const DomainParamsSchema = z.strictObject({\n hideAll: z.boolean().optional(),\n hideDescriptionAndLinks: z.boolean().optional(),\n onlyLiveTechnologies: z.boolean().optional(),\n noMetaData: z.boolean().optional(),\n noAttributeData: z.boolean().optional(),\n noPII: z.boolean().optional(),\n firstDetectedRange: z.string().regex(dateRangePattern, \"Expected YYYY-MM-DD or YYYY-MM-DD-YYYY-MM-DD\").optional(),\n lastDetectedRange: z.string().regex(dateRangePattern, \"Expected YYYY-MM-DD or YYYY-MM-DD-YYYY-MM-DD\").optional(),\n});\n/**\n * Optional parameters for the Domain API endpoint.\n *\n * @example\n * ```ts\n * await client.domain(\"example.com\", {\n * onlyLiveTechnologies: true,\n * hideAll: true,\n * });\n * ```\n */\nexport type DomainParams = z.infer<typeof DomainParamsSchema>;\n\n/** Validation schema for {@link ListsParams}. */\nexport const ListsParamsSchema = z.strictObject({\n includeMetaData: z.boolean().optional(),\n offset: z.string().optional(),\n since: z.string().optional(),\n});\n/**\n * Optional parameters for the Lists API endpoint.\n *\n * @example\n * ```ts\n * await client.lists(\"Shopify\", { since: \"2024-01-01\" });\n * ```\n */\nexport type ListsParams = z.infer<typeof ListsParamsSchema>;\n\n/** Validation schema for {@link TrendsParams}. */\nexport const TrendsParamsSchema = z.strictObject({\n date: z.string().optional(),\n});\n/**\n * Optional parameters for the Trends API endpoint.\n *\n * @example\n * ```ts\n * await client.trends(\"jQuery\", { date: \"2024-06\" });\n * ```\n */\nexport type TrendsParams = z.infer<typeof TrendsParamsSchema>;\n\n/** Validation schema for {@link CompanyToUrlParams}. */\nexport const CompanyToUrlParamsSchema = z.strictObject({\n tld: z.string().optional(),\n amount: z.number().optional(),\n});\n/**\n * Optional parameters for the Company-to-URL API endpoint.\n *\n * @example\n * ```ts\n * await client.companyToUrl(\"Google\", { tld: \"com\", amount: 5 });\n * ```\n */\nexport type CompanyToUrlParams = z.infer<typeof CompanyToUrlParamsSchema>;\n\n/** Validation schema for {@link TrustParams}. */\nexport const TrustParamsSchema = z.strictObject({\n words: z.string().optional(),\n live: z.boolean().optional(),\n});\n/**\n * Optional parameters for the Trust API endpoint.\n *\n * @example\n * ```ts\n * await client.trust(\"example.com\", { words: \"shop,buy\", live: true });\n * ```\n */\nexport type TrustParams = z.infer<typeof TrustParamsSchema>;\n\nexport const SingleLookupSchema = z.string().min(1);\nexport const MultiLookupSchema = z.union([z.string().min(1), z.array(z.string().min(1)).min(1).max(16)]);\n\n// ─── Response Schemas ────────────────────────────────────────────────────────\n// Use z.strictObject() to catch upstream API drift — if BuiltWith adds or\n// removes fields, the parse will fail, signaling the schema needs updating.\n\n/** Validation schema for {@link FreeResponse}. */\nexport const FreeResponseSchema = z.strictObject({\n domain: z.string(),\n first: z.number(),\n last: z.number(),\n groups: z.array(\n z.strictObject({\n name: z.string(),\n live: z.number(),\n dead: z.number(),\n latest: z.number(),\n oldest: z.number(),\n categories: z.array(\n z.strictObject({\n live: z.number(),\n dead: z.number(),\n latest: z.number(),\n oldest: z.number(),\n name: z.string(),\n }),\n ),\n }),\n ),\n});\n/** Response from the Free API — basic technology profile for a single domain. */\nexport type FreeResponse = z.infer<typeof FreeResponseSchema>;\n\nconst TechnologySchema = z.strictObject({\n Name: z.string(),\n Description: z.string(),\n Link: z.string(),\n Parent: z.string().optional(),\n Tag: z.string(),\n FirstDetected: z.number(),\n LastDetected: z.number(),\n IsPremium: z.string(),\n Categories: z.array(z.string()).optional(),\n});\n\nconst PathSchema = z.strictObject({\n Technologies: z.array(TechnologySchema),\n FirstIndexed: z.number(),\n LastIndexed: z.number(),\n Domain: z.string(),\n Url: z.string(),\n SubDomain: z.string(),\n});\n\nconst MetaSchema = z.strictObject({\n Majestic: z.number(),\n Vertical: z.string(),\n Social: z.array(z.string()),\n CompanyName: z.string(),\n Telephones: z.array(z.string()),\n Emails: z.array(z.string()),\n City: z.string(),\n State: z.string(),\n Postcode: z.string(),\n Country: z.string(),\n Names: z.array(\n z.strictObject({\n Name: z.string(),\n Type: z.number(),\n Level: z.string(),\n Email: z.string(),\n }),\n ),\n ARank: z.number(),\n QRank: z.number(),\n});\n\nconst AttributesSchema = z.strictObject({\n MJRank: z.number(),\n MJTLDRank: z.number(),\n RefSN: z.number(),\n RefIP: z.number(),\n Sitemap: z.number(),\n GTMTags: z.number(),\n QubitTags: z.number(),\n TealiumTags: z.number(),\n AdobeTags: z.number(),\n CDimensions: z.number(),\n CGoals: z.number(),\n CMetrics: z.number(),\n});\n\n/** Validation schema for {@link DomainResponse}. */\nexport const DomainResponseSchema = z.strictObject({\n Results: z.array(\n z.strictObject({\n Result: z.strictObject({\n SpendHistory: z.array(\n z.strictObject({\n D: z.number(),\n S: z.number(),\n }),\n ),\n IsDB: z.string(),\n Spend: z.number(),\n Paths: z.array(PathSchema),\n }),\n Meta: MetaSchema,\n Attributes: AttributesSchema,\n FirstIndexed: z.number(),\n LastIndexed: z.number(),\n Lookup: z.string(),\n SalesRevenue: z.number(),\n }),\n ),\n Errors: z.array(z.string()),\n});\n/** Response from the Domain API — detailed technology profile with metadata and attributes. */\nexport type DomainResponse = z.infer<typeof DomainResponseSchema>;\n\n/** Validation schema for {@link ListsResponse}. */\nexport const ListsResponseSchema = z.strictObject({\n NextOffset: z.string(),\n Results: z.array(\n z.strictObject({\n D: z.string(),\n FI: z.number().optional(),\n LI: z.number().optional(),\n LOS: z.array(z.string()).optional(),\n Q: z.number().optional(),\n A: z.number().optional(),\n U: z.number().optional(),\n M: z.number().optional(),\n SKU: z.number().optional(),\n F: z.number().optional(),\n E: z.number().optional(),\n FD: z.number().optional(),\n LD: z.number().optional(),\n S: z.number().optional(),\n R: z.number().optional(),\n Country: z.string().optional(),\n }),\n ),\n});\n/** Response from the Lists API — domains using a specific technology. */\nexport type ListsResponse = z.infer<typeof ListsResponseSchema>;\n\n/** Validation schema for {@link RelationshipsResponse}. */\nexport const RelationshipsResponseSchema = z.strictObject({\n Relationships: z.array(\n z.strictObject({\n Domain: z.string(),\n Identifiers: z.array(\n z.strictObject({\n Value: z.string(),\n Type: z.string(),\n First: z.number(),\n Last: z.number(),\n Matches: z.array(\n z.strictObject({\n Domain: z.string(),\n First: z.number(),\n Last: z.number(),\n Overlap: z.boolean(),\n }),\n ),\n }),\n ),\n }),\n ),\n Errors: z.array(z.string()),\n results: z.number(),\n max_per_page: z.number(),\n next_skip: z.number(),\n more_results: z.boolean(),\n});\n/** Response from the Relationships API — domains sharing identifiers (analytics IDs, ad accounts, etc.). */\nexport type RelationshipsResponse = z.infer<typeof RelationshipsResponseSchema>;\n\n/** Validation schema for {@link KeywordsResponse}. */\nexport const KeywordsResponseSchema = z.strictObject({\n Keywords: z.array(\n z.strictObject({\n Domain: z.string(),\n Keywords: z.array(z.string()),\n }),\n ),\n});\n/** Response from the Keywords API — SEO keywords associated with domains. */\nexport type KeywordsResponse = z.infer<typeof KeywordsResponseSchema>;\n\n/** Validation schema for {@link TrendsResponse}. */\nexport const TrendsResponseSchema = z.strictObject({\n Tech: z.strictObject({\n icon: z.string(),\n categories: z.array(z.string()),\n tag: z.string(),\n is_premium: z.string(),\n name: z.string(),\n description: z.string(),\n link: z.string(),\n trends_link: z.string(),\n coverage: z.strictObject({\n ten_k: z.number(),\n hundred_k: z.number(),\n milly: z.number(),\n live: z.number(),\n expired: z.number(),\n }),\n }),\n});\n/** Response from the Trends API — technology adoption coverage data. */\nexport type TrendsResponse = z.infer<typeof TrendsResponseSchema>;\n\n/** Validation schema for {@link CompanyToUrlResponse}. */\nexport const CompanyToUrlResponseSchema = z.array(\n z.strictObject({\n Domain: z.string(),\n CompanyName: z.string(),\n Spend: z.number(),\n PageRank: z.number(),\n BuiltWithRank: z.number(),\n Parked: z.boolean(),\n Country: z.string(),\n State: z.string(),\n Postcode: z.string(),\n City: z.string(),\n Socials: z.array(z.string()),\n }),\n);\n/** Response from the Company-to-URL API — domains associated with a company name. */\nexport type CompanyToUrlResponse = z.infer<typeof CompanyToUrlResponseSchema>;\n\n/** Validation schema for {@link TrustResponse}. */\nexport const TrustResponseSchema = z.strictObject({\n Domain: z.string(),\n DBRecord: z.strictObject({\n EarliestRecord: z.number(),\n LatestUpdate: z.number(),\n PremiumTechs: z.number(),\n LiveTechs: z.boolean(),\n AffiliateLinks: z.boolean(),\n PaymentOptions: z.boolean(),\n Ecommerce: z.boolean(),\n Parked: z.boolean(),\n Spend: z.number(),\n Established: z.boolean(),\n DBIndexed: z.boolean(),\n }),\n // Intentionally loose — BuiltWith does not document the LiveRecord shape.\n // Populated only when `live: true` is passed; otherwise null.\n LiveRecord: z.object({}).passthrough().nullable(),\n Status: z.number(),\n});\n/** Response from the Trust API — domain verification and trust score. */\nexport type TrustResponse = z.infer<typeof TrustResponseSchema>;\n\n/** Validation schema for {@link TagsResponse}. */\nexport const TagsResponseSchema = z.array(\n z.strictObject({\n Value: z.string(),\n Matches: z.array(\n z.strictObject({\n Domain: z.string(),\n First: z.string(),\n Last: z.string(),\n }),\n ),\n }),\n);\n/** Response from the Tags API — tracking and analytics tags found on a domain. */\nexport type TagsResponse = z.infer<typeof TagsResponseSchema>;\n\n/** Validation schema for {@link RecommendationsResponse}. */\nexport const RecommendationsResponseSchema = z.array(\n z.strictObject({\n Domain: z.string(),\n Compiled: z.string(),\n Recommendations: z.array(\n z.strictObject({\n link: z.string(),\n name: z.string(),\n tag: z.string(),\n categories: z.array(z.string()),\n stars: z.number(),\n match: z.number(),\n }),\n ),\n }),\n);\n/** Response from the Recommendations API — suggested technologies for a domain. */\nexport type RecommendationsResponse = z.infer<typeof RecommendationsResponseSchema>;\n\n/** Validation schema for {@link RedirectsResponse}. */\nexport const RedirectsResponseSchema = z.strictObject({\n Lookup: z.string(),\n Inbound: z.array(\n z.strictObject({\n Domain: z.string(),\n FirstDetected: z.string(),\n LastDetected: z.string(),\n }),\n ),\n Outbound: z.array(\n z.strictObject({\n Domain: z.string(),\n FirstDetected: z.string(),\n LastDetected: z.string(),\n }),\n ),\n});\n/** Response from the Redirects API — inbound and outbound redirect chains. */\nexport type RedirectsResponse = z.infer<typeof RedirectsResponseSchema>;\n\n/** Validation schema for {@link ProductResponse}. */\nexport const ProductResponseSchema = z.strictObject({\n query: z.string(),\n is_more: z.boolean(),\n page: z.number(),\n limit: z.number(),\n results: z.number(),\n shop_count: z.number(),\n credits: z.number(),\n used: z.number(),\n remaining: z.number(),\n used_this_query: z.number(),\n next_page: z.string(),\n shops: z.array(\n z.strictObject({\n Domain: z.string(),\n Products: z.array(\n z.strictObject({\n Title: z.string(),\n Url: z.string(),\n Indexed: z.string(),\n FirstIndexed: z.string(),\n Price: z.number(),\n }),\n ),\n Type: z.number(),\n Spend: z.number(),\n }),\n ),\n});\n/** Response from the Product API — e-commerce product search results. */\nexport type ProductResponse = z.infer<typeof ProductResponseSchema>;\n\n// ─── Client Interface ────────────────────────────────────────────────────────\n\n/**\n * The BuiltWith API client. Created via `createClient()`.\n *\n * All methods return validated, typed responses when using JSON format,\n * or raw strings for XML/TXT/CSV/TSV formats.\n *\n * @example\n * ```ts\n * import { createClient } from \"builtwith-api\";\n *\n * const client = createClient(process.env.BUILTWITH_API_KEY!);\n * const profile = await client.free(\"example.com\");\n * ```\n */\nexport interface BuiltWithClient {\n /** Free lookup — basic technology profile for a single domain. */\n free(lookup: string): Promise<FreeResponse | string>;\n /**\n * Detailed technology profile for one or more domains.\n * @param lookup - Single domain or array of up to 16 domains.\n * @param params - Optional filters (hide fields, date ranges, etc.).\n */\n domain(lookup: string | string[], params?: DomainParams): Promise<DomainResponse | string>;\n /**\n * List domains using a specific technology.\n * @param technology - Technology name (e.g. \"Shopify\", \"React\").\n * @param params - Optional pagination and filtering.\n */\n lists(technology: string, params?: ListsParams): Promise<ListsResponse | string>;\n /**\n * Find related domains via shared identifiers (analytics IDs, ad accounts, etc.).\n * @param lookup - Single domain or array of up to 16 domains.\n */\n relationships(lookup: string | string[]): Promise<RelationshipsResponse | string>;\n /**\n * Get SEO keywords associated with one or more domains.\n * @param lookup - Single domain or array of up to 16 domains.\n */\n keywords(lookup: string | string[]): Promise<KeywordsResponse | string>;\n /**\n * Technology adoption trends and coverage data.\n * @param technology - Technology name to look up.\n * @param params - Optional date filter.\n */\n trends(technology: string, params?: TrendsParams): Promise<TrendsResponse | string>;\n /**\n * Find domains associated with a company name.\n * @param companyName - Company name to search.\n * @param params - Optional TLD filter and result count.\n */\n companyToUrl(companyName: string, params?: CompanyToUrlParams): Promise<CompanyToUrlResponse | string>;\n /** Live technology lookup — scans the domain in real time. */\n domainLive(lookup: string): Promise<DomainResponse | string>;\n /**\n * Trust and verification score for a domain.\n * @param lookup - Domain to look up.\n * @param params - Optional keywords and live analysis toggle.\n */\n trust(lookup: string, params?: TrustParams): Promise<TrustResponse | string>;\n /** Get tracking and analytics tags found on a domain. */\n tags(lookup: string): Promise<TagsResponse | string>;\n /** Get technology recommendations for a domain. */\n recommendations(lookup: string): Promise<RecommendationsResponse | string>;\n /** Get inbound and outbound redirect chains for a domain. */\n redirects(lookup: string): Promise<RedirectsResponse | string>;\n /** Search for products across e-commerce sites. */\n product(query: string): Promise<ProductResponse | string>;\n}\n\n// ─── Utility Types ───────────────────────────────────────────────────────────\n\n/** @internal Maps JS param names to BuiltWith API query string keys. */\nexport type BooleanMapping = Record<string, string>;\n/** @internal URL query parameters — `undefined` values are omitted. */\nexport type QueryParams = Record<string, string | number | undefined>;\n",
6
+ "import { z } from \"zod/v4\";\n\n// ─── Input Schemas ───────────────────────────────────────────────────────────\n\n/** Supported API response formats. */\nexport const ResponseFormatSchema = z.enum([\"xml\", \"json\", \"txt\", \"csv\", \"tsv\"]);\n/**\n * Response format returned by the BuiltWith API.\n *\n * - `\"json\"` — parsed and validated (default)\n * - `\"xml\"` / `\"txt\"` / `\"csv\"` / `\"tsv\"` — returned as raw strings\n */\nexport type ResponseFormat = z.infer<typeof ResponseFormatSchema>;\n\n/** Validation schema for {@link ClientOptions}. */\nexport const ClientOptionsSchema = z.strictObject({\n responseFormat: ResponseFormatSchema.optional(),\n});\n/**\n * Options passed to `createClient`.\n *\n * @example\n * ```ts\n * const client = createClient(API_KEY, { responseFormat: \"xml\" });\n * ```\n */\nexport type ClientOptions = z.infer<typeof ClientOptionsSchema>;\n\n/** Matches YYYY-MM-DD or a pipe-joined YYYY-MM-DD|YYYY-MM-DD range (v23 FDRANGE/LDRANGE format). */\nconst dateRangePattern = /^\\d{4}-\\d{2}-\\d{2}(\\|\\d{4}-\\d{2}-\\d{2})?$/;\n\n/** Validation schema for {@link DomainParams}. */\nexport const DomainParamsSchema = z.strictObject({\n hideAll: z.boolean().optional(),\n hideDescriptionAndLinks: z.boolean().optional(),\n onlyLiveTechnologies: z.boolean().optional(),\n noMetaData: z.boolean().optional(),\n noAttributeData: z.boolean().optional(),\n noPII: z.boolean().optional(),\n includeTrust: z.boolean().optional(),\n firstDetectedRange: z.string().regex(dateRangePattern, \"Expected YYYY-MM-DD or YYYY-MM-DD|YYYY-MM-DD\").optional(),\n lastDetectedRange: z.string().regex(dateRangePattern, \"Expected YYYY-MM-DD or YYYY-MM-DD|YYYY-MM-DD\").optional(),\n});\n/**\n * Optional parameters for the Domain API endpoint.\n *\n * @example\n * ```ts\n * await client.domain(\"example.com\", {\n * onlyLiveTechnologies: true,\n * hideAll: true,\n * });\n * ```\n */\nexport type DomainParams = z.infer<typeof DomainParamsSchema>;\n\n/** Validation schema for {@link ListsParams}. */\nexport const ListsParamsSchema = z.strictObject({\n includeMetaData: z.boolean().optional(),\n offset: z.string().optional(),\n since: z.string().optional(),\n});\n/**\n * Optional parameters for the Lists API endpoint.\n *\n * @example\n * ```ts\n * await client.lists(\"Shopify\", { since: \"2024-01-01\" });\n * ```\n */\nexport type ListsParams = z.infer<typeof ListsParamsSchema>;\n\n/** Validation schema for {@link TrendsParams}. */\nexport const TrendsParamsSchema = z.strictObject({\n date: z.string().optional(),\n});\n/**\n * Optional parameters for the Trends API endpoint.\n *\n * @example\n * ```ts\n * await client.trends(\"jQuery\", { date: \"2024-06\" });\n * ```\n */\nexport type TrendsParams = z.infer<typeof TrendsParamsSchema>;\n\n/** Validation schema for {@link CompanyToUrlParams}. */\nexport const CompanyToUrlParamsSchema = z.strictObject({\n tld: z.string().optional(),\n amount: z.number().optional(),\n});\n/**\n * Optional parameters for the Company-to-URL API endpoint.\n *\n * @example\n * ```ts\n * await client.companyToUrl(\"Google\", { tld: \"com\", amount: 5 });\n * ```\n */\nexport type CompanyToUrlParams = z.infer<typeof CompanyToUrlParamsSchema>;\n\n/** Validation schema for {@link TrustParams}. */\nexport const TrustParamsSchema = z.strictObject({\n words: z.string().optional(),\n live: z.boolean().optional(),\n});\n/**\n * Optional parameters for the Trust API endpoint.\n *\n * @example\n * ```ts\n * await client.trust(\"example.com\", { words: \"shop,buy\", live: true });\n * ```\n */\nexport type TrustParams = z.infer<typeof TrustParamsSchema>;\n\nexport const SingleLookupSchema = z.string().min(1);\nexport const MultiLookupSchema = z.union([z.string().min(1), z.array(z.string().min(1)).min(1).max(16)]);\n\n// ─── Response Schemas ────────────────────────────────────────────────────────\n// Use z.strictObject() to catch upstream API drift — if BuiltWith adds or\n// removes fields, the parse will fail, signaling the schema needs updating.\n\n/** Validation schema for {@link FreeResponse}. */\nexport const FreeResponseSchema = z.strictObject({\n domain: z.string(),\n first: z.number(),\n last: z.number(),\n groups: z.array(\n z.strictObject({\n name: z.string(),\n live: z.number(),\n dead: z.number(),\n latest: z.number(),\n oldest: z.number(),\n categories: z.array(\n z.strictObject({\n live: z.number(),\n dead: z.number(),\n latest: z.number(),\n oldest: z.number(),\n name: z.string(),\n }),\n ),\n }),\n ),\n});\n/** Response from the Free API — basic technology profile for a single domain. */\nexport type FreeResponse = z.infer<typeof FreeResponseSchema>;\n\nconst TechnologySchema = z.strictObject({\n Id: z.number(),\n Name: z.string(),\n Description: z.string(),\n Link: z.string(),\n Parent: z.string().optional(),\n Tag: z.string(),\n FirstDetected: z.number(),\n LastDetected: z.number(),\n IsPremium: z.string(),\n Categories: z.array(z.string()).optional(),\n});\n\nconst PathSchema = z.strictObject({\n Technologies: z.array(TechnologySchema),\n FirstIndexed: z.number(),\n LastIndexed: z.number(),\n Domain: z.string(),\n Url: z.string(),\n SubDomain: z.string(),\n});\n\nconst MetaSchema = z.strictObject({\n Majestic: z.number(),\n Umbrella: z.number().optional(),\n Vertical: z.string(),\n Social: z.array(z.string()).optional(),\n CompanyName: z.string(),\n Telephones: z.array(z.string()),\n Emails: z.array(z.string()),\n City: z.string(),\n State: z.string(),\n Postcode: z.string(),\n Country: z.string(),\n Names: z.array(\n z.strictObject({\n Name: z.string(),\n Type: z.number(),\n Level: z.string(),\n Email: z.string(),\n }),\n ),\n ARank: z.number(),\n QRank: z.number(),\n});\n\nconst AttributesSchema = z.strictObject({\n MJRank: z.number(),\n MJTLDRank: z.number(),\n RefSN: z.number(),\n RefIP: z.number(),\n Sitemap: z.number(),\n GTMTags: z.number(),\n QubitTags: z.number(),\n TealiumTags: z.number(),\n AdobeTags: z.number(),\n CDimensions: z.number(),\n CGoals: z.number(),\n CMetrics: z.number(),\n Followers: z.number().optional(),\n Employees: z.number().optional(),\n ProductCount: z.number().optional(),\n Revenue: z.number().optional(),\n PageRank: z.number().optional(),\n BWRank: z.number().optional(),\n Tranco: z.number().optional(),\n BWS: z.number().optional(),\n EcommerceCategory: z.number().optional(),\n TTFB: z.number().optional(),\n SourceBytes: z.number().optional(),\n AIMaturity: z.number().optional(),\n AIOpenness: z.number().optional(),\n AIReadiness: z.number().optional(),\n AIVisibility: z.number().optional(),\n});\n\n/** Validation schema for {@link DomainResponse}. */\nexport const DomainResponseSchema = z.strictObject({\n Results: z.array(\n z.strictObject({\n Result: z.strictObject({\n SpendHistory: z.array(\n z.strictObject({\n D: z.number(),\n S: z.number(),\n }),\n ),\n IsDB: z.string(),\n Spend: z.number(),\n Paths: z.array(PathSchema),\n }),\n Meta: MetaSchema,\n Attributes: AttributesSchema,\n FirstIndexed: z.number(),\n LastIndexed: z.number(),\n Lookup: z.string(),\n SalesRevenue: z.number(),\n }),\n ),\n Errors: z.array(z.string()),\n});\n/** Response from the Domain API — detailed technology profile with metadata and attributes. */\nexport type DomainResponse = z.infer<typeof DomainResponseSchema>;\n\n/** Validation schema for {@link ListsResponse}. */\nexport const ListsResponseSchema = z.strictObject({\n NextOffset: z.string(),\n Results: z.array(\n z.strictObject({\n D: z.string(),\n FI: z.number().optional(),\n LI: z.number().optional(),\n LOS: z.array(z.string()).optional(),\n Q: z.number().optional(),\n A: z.number().optional(),\n U: z.number().optional(),\n M: z.number().optional(),\n SKU: z.number().optional(),\n F: z.number().optional(),\n E: z.number().optional(),\n FD: z.number().optional(),\n LD: z.number().optional(),\n S: z.number().optional(),\n R: z.number().optional(),\n Country: z.string().optional(),\n }),\n ),\n});\n/** Response from the Lists API — domains using a specific technology. */\nexport type ListsResponse = z.infer<typeof ListsResponseSchema>;\n\n/** Validation schema for {@link RelationshipsResponse}. */\nexport const RelationshipsResponseSchema = z.strictObject({\n Relationships: z.array(\n z.strictObject({\n Domain: z.string(),\n Identifiers: z.array(\n z.strictObject({\n Value: z.string(),\n Type: z.string(),\n First: z.number(),\n Last: z.number(),\n Matches: z.array(\n z.strictObject({\n Domain: z.string(),\n First: z.number(),\n Last: z.number(),\n Overlap: z.boolean(),\n }),\n ),\n }),\n ),\n }),\n ),\n Errors: z.array(z.string()),\n results: z.number(),\n max_per_page: z.number(),\n next_skip: z.number(),\n more_results: z.boolean(),\n});\n/** Response from the Relationships API — domains sharing identifiers (analytics IDs, ad accounts, etc.). */\nexport type RelationshipsResponse = z.infer<typeof RelationshipsResponseSchema>;\n\n/** Validation schema for {@link KeywordsResponse}. */\nexport const KeywordsResponseSchema = z.strictObject({\n Keywords: z.array(\n z.strictObject({\n Domain: z.string(),\n Keywords: z.array(z.string()),\n }),\n ),\n});\n/** Response from the Keywords API — SEO keywords associated with domains. */\nexport type KeywordsResponse = z.infer<typeof KeywordsResponseSchema>;\n\n/** Validation schema for {@link TrendsResponse}. */\nexport const TrendsResponseSchema = z.strictObject({\n Tech: z.strictObject({\n icon: z.string(),\n categories: z.array(z.string()),\n tag: z.string(),\n is_premium: z.string(),\n name: z.string(),\n description: z.string(),\n link: z.string(),\n trends_link: z.string(),\n coverage: z.strictObject({\n ten_k: z.number(),\n hundred_k: z.number(),\n milly: z.number(),\n live: z.number(),\n expired: z.number(),\n }),\n }),\n});\n/** Response from the Trends API — technology adoption coverage data. */\nexport type TrendsResponse = z.infer<typeof TrendsResponseSchema>;\n\n/** Validation schema for {@link CompanyToUrlResponse}. */\nexport const CompanyToUrlResponseSchema = z.array(\n z.strictObject({\n Domain: z.string(),\n CompanyName: z.string(),\n Spend: z.number(),\n PageRank: z.number(),\n BuiltWithRank: z.number(),\n Parked: z.boolean(),\n Country: z.string(),\n State: z.string(),\n Postcode: z.string(),\n City: z.string(),\n Socials: z.array(z.string()),\n }),\n);\n/** Response from the Company-to-URL API — domains associated with a company name. */\nexport type CompanyToUrlResponse = z.infer<typeof CompanyToUrlResponseSchema>;\n\n/** Validation schema for {@link TrustResponse}. */\nexport const TrustResponseSchema = z.strictObject({\n Domain: z.string(),\n DBRecord: z.strictObject({\n EarliestRecord: z.number(),\n LatestUpdate: z.number(),\n PremiumTechs: z.number(),\n LiveTechs: z.boolean(),\n AffiliateLinks: z.boolean(),\n PaymentOptions: z.boolean(),\n Ecommerce: z.boolean(),\n Parked: z.boolean(),\n Spend: z.number(),\n Established: z.boolean(),\n DBIndexed: z.boolean(),\n }),\n // Intentionally loose — BuiltWith does not document the LiveRecord shape.\n // Populated only when `live: true` is passed; otherwise null.\n LiveRecord: z.object({}).passthrough().nullable(),\n Status: z.number(),\n});\n/** Response from the Trust API — domain verification and trust score. */\nexport type TrustResponse = z.infer<typeof TrustResponseSchema>;\n\n/** Validation schema for {@link TagsResponse}. */\nexport const TagsResponseSchema = z.array(\n z.strictObject({\n Value: z.string(),\n Matches: z.array(\n z.strictObject({\n Domain: z.string(),\n First: z.string(),\n Last: z.string(),\n }),\n ),\n }),\n);\n/** Response from the Tags API — tracking and analytics tags found on a domain. */\nexport type TagsResponse = z.infer<typeof TagsResponseSchema>;\n\n/** Validation schema for {@link RecommendationsResponse}. */\nexport const RecommendationsResponseSchema = z.array(\n z.strictObject({\n Domain: z.string(),\n Compiled: z.string(),\n Recommendations: z.array(\n z.strictObject({\n link: z.string(),\n name: z.string(),\n tag: z.string(),\n categories: z.array(z.string()),\n stars: z.number(),\n match: z.number(),\n }),\n ),\n }),\n);\n/** Response from the Recommendations API — suggested technologies for a domain. */\nexport type RecommendationsResponse = z.infer<typeof RecommendationsResponseSchema>;\n\n/** Validation schema for {@link RedirectsResponse}. */\nexport const RedirectsResponseSchema = z.strictObject({\n Lookup: z.string(),\n Inbound: z.array(\n z.strictObject({\n Domain: z.string(),\n FirstDetected: z.string(),\n LastDetected: z.string(),\n }),\n ),\n Outbound: z.array(\n z.strictObject({\n Domain: z.string(),\n FirstDetected: z.string(),\n LastDetected: z.string(),\n }),\n ),\n});\n/** Response from the Redirects API — inbound and outbound redirect chains. */\nexport type RedirectsResponse = z.infer<typeof RedirectsResponseSchema>;\n\n/** Validation schema for {@link ProductResponse}. */\nexport const ProductResponseSchema = z.strictObject({\n query: z.string(),\n is_more: z.boolean(),\n page: z.number(),\n limit: z.number(),\n results: z.number(),\n shop_count: z.number(),\n credits: z.number(),\n used: z.number(),\n remaining: z.number(),\n used_this_query: z.number(),\n next_page: z.string(),\n shops: z.array(\n z.strictObject({\n Domain: z.string(),\n Products: z.array(\n z.strictObject({\n Title: z.string(),\n Url: z.string(),\n Indexed: z.string(),\n FirstIndexed: z.string(),\n Price: z.number(),\n }),\n ),\n Type: z.number(),\n Spend: z.number(),\n }),\n ),\n});\n/** Response from the Product API — e-commerce product search results. */\nexport type ProductResponse = z.infer<typeof ProductResponseSchema>;\n\n// ─── Client Interface ────────────────────────────────────────────────────────\n\n/**\n * The BuiltWith API client. Created via `createClient()`.\n *\n * All methods return validated, typed responses when using JSON format,\n * or raw strings for XML/TXT/CSV/TSV formats.\n *\n * @example\n * ```ts\n * import { createClient } from \"builtwith-api\";\n *\n * const client = createClient(process.env.BUILTWITH_API_KEY!);\n * const profile = await client.free(\"example.com\");\n * ```\n */\nexport interface BuiltWithClient {\n /** Free lookup — basic technology profile for a single domain. */\n free(lookup: string): Promise<FreeResponse | string>;\n /**\n * Detailed technology profile for one or more domains.\n * @param lookup - Single domain or array of up to 16 domains.\n * @param params - Optional filters (hide fields, date ranges, etc.).\n */\n domain(lookup: string | string[], params?: DomainParams): Promise<DomainResponse | string>;\n /**\n * List domains using a specific technology.\n * @param technology - Technology name (e.g. \"Shopify\", \"React\").\n * @param params - Optional pagination and filtering.\n */\n lists(technology: string, params?: ListsParams): Promise<ListsResponse | string>;\n /**\n * Find related domains via shared identifiers (analytics IDs, ad accounts, etc.).\n * @param lookup - Single domain or array of up to 16 domains.\n */\n relationships(lookup: string | string[]): Promise<RelationshipsResponse | string>;\n /**\n * Get SEO keywords associated with one or more domains.\n * @param lookup - Single domain or array of up to 16 domains.\n */\n keywords(lookup: string | string[]): Promise<KeywordsResponse | string>;\n /**\n * Technology adoption trends and coverage data.\n * @param technology - Technology name to look up.\n * @param params - Optional date filter.\n */\n trends(technology: string, params?: TrendsParams): Promise<TrendsResponse | string>;\n /**\n * Find domains associated with a company name.\n * @param companyName - Company name to search.\n * @param params - Optional TLD filter and result count.\n */\n companyToUrl(companyName: string, params?: CompanyToUrlParams): Promise<CompanyToUrlResponse | string>;\n /** Live technology lookup — scans the domain in real time. */\n domainLive(lookup: string): Promise<DomainResponse | string>;\n /**\n * Trust and verification score for a domain.\n * @param lookup - Domain to look up.\n * @param params - Optional keywords and live analysis toggle.\n */\n trust(lookup: string, params?: TrustParams): Promise<TrustResponse | string>;\n /** Get tracking and analytics tags found on a domain. */\n tags(lookup: string): Promise<TagsResponse | string>;\n /** Get technology recommendations for a domain. */\n recommendations(lookup: string): Promise<RecommendationsResponse | string>;\n /** Get inbound and outbound redirect chains for a domain. */\n redirects(lookup: string): Promise<RedirectsResponse | string>;\n /** Search for products across e-commerce sites. */\n product(query: string): Promise<ProductResponse | string>;\n}\n\n// ─── Utility Types ───────────────────────────────────────────────────────────\n\n/** @internal Maps JS param names to BuiltWith API query string keys. */\nexport type BooleanMapping = Record<string, string>;\n/** @internal URL query parameters — `undefined` values are omitted. */\nexport type QueryParams = Record<string, string | number | undefined>;\n",
7
7
  "import type { BooleanMapping, QueryParams } from \"./schemas.js\";\nimport { MultiLookupSchema, SingleLookupSchema } from \"./schemas.js\";\n\nexport const toQueryString = (params: QueryParams): string =>\n Object.entries(params)\n .filter((entry): entry is [string, string | number] => entry[1] !== undefined)\n .map(([k, v]) => `${k}=${encodeURIComponent(v).replace(/%2C/gi, \",\")}`)\n .join(\"&\");\n\nconst booleanFlag = (value: unknown): \"yes\" | undefined => (value ? \"yes\" : undefined);\n\nexport const booleanParams = (\n params: Record<string, unknown> | null | undefined,\n mapping: BooleanMapping,\n): QueryParams =>\n Object.fromEntries(Object.entries(mapping).map(([jsKey, apiKey]) => [apiKey, booleanFlag(params?.[jsKey])]));\n\nexport const cleanWords = (words: string | undefined): string | undefined =>\n words\n ? words\n .split(\",\")\n .map((w) => w.trim())\n .join(\",\")\n : undefined;\n\nexport const buildURL = (\n apiKey: string,\n format: string,\n path: string,\n params: QueryParams,\n subdomain: string = \"api\",\n): string => {\n const base = `https://${subdomain}.builtwith.com/${path}/api.${format}?KEY=${apiKey}`;\n const qs = toQueryString(params);\n return qs ? `${base}&${qs}` : base;\n};\n\nexport const validateLookup = (url: string | string[], { multi = false }: { multi?: boolean } = {}): void => {\n if (multi) {\n MultiLookupSchema.parse(url);\n } else {\n SingleLookupSchema.parse(url);\n }\n if (Array.isArray(url)) {\n if (!multi) throw new Error(\"API does not allow for multi-domain LOOKUP\");\n if (url.length > 16) throw new Error(\"Domain LOOKUP size too big (16 max)\");\n }\n};\n",
8
- "import type { z } from \"zod/v4\";\nimport { VALID_RESPONSE_TYPES } from \"./config.js\";\nimport type { ResponseFormat } from \"./schemas.js\";\n\nconst TEXT_FORMATS: readonly ResponseFormat[] = [\n VALID_RESPONSE_TYPES.TXT,\n VALID_RESPONSE_TYPES.XML,\n VALID_RESPONSE_TYPES.CSV,\n VALID_RESPONSE_TYPES.TSV,\n];\n\nexport const request = async <T>(url: string, format: ResponseFormat, schema: z.ZodType<T>): Promise<T | string> => {\n const res = await fetch(url);\n if (!res.ok) {\n const body = await res.text();\n throw new Error(`BuiltWith API error ${res.status}: ${body}`);\n }\n if (TEXT_FORMATS.includes(format)) {\n return res.text();\n }\n const data: unknown = await res.json();\n return schema.parse(data);\n};\n\nexport const requestSafe = async <T>(\n url: string,\n format: ResponseFormat,\n schema: z.ZodType<T>,\n): Promise<T | string> => {\n const res = await fetch(url);\n if (!res.ok) {\n const body = await res.text();\n throw new Error(`BuiltWith API error ${res.status}: ${body}`);\n }\n if (TEXT_FORMATS.includes(format)) {\n return res.text();\n }\n const raw = await res.text();\n let data: unknown;\n try {\n data = JSON.parse(raw);\n } catch {\n console.warn(\"BuiltWith sent an invalid JSON payload. Falling back to text parsing.\");\n return raw;\n }\n return schema.parse(data);\n};\n",
9
- "import { VALID_RESPONSE_TYPES } from \"./config.js\";\nimport { booleanParams, buildURL, cleanWords, validateLookup } from \"./params.js\";\nimport { request, requestSafe } from \"./request.js\";\nimport type {\n BooleanMapping,\n BuiltWithClient,\n ClientOptions,\n CompanyToUrlParams,\n DomainParams,\n ListsParams,\n QueryParams,\n ResponseFormat,\n TrendsParams,\n TrustParams,\n} from \"./schemas.js\";\nimport {\n ClientOptionsSchema,\n CompanyToUrlParamsSchema,\n CompanyToUrlResponseSchema,\n DomainParamsSchema,\n DomainResponseSchema,\n FreeResponseSchema,\n KeywordsResponseSchema,\n ListsParamsSchema,\n ListsResponseSchema,\n ProductResponseSchema,\n RecommendationsResponseSchema,\n RedirectsResponseSchema,\n RelationshipsResponseSchema,\n TagsResponseSchema,\n TrendsParamsSchema,\n TrendsResponseSchema,\n TrustParamsSchema,\n TrustResponseSchema,\n} from \"./schemas.js\";\n\nconst DOMAIN_BOOLEANS: BooleanMapping = {\n hideAll: \"HIDETEXT\",\n hideDescriptionAndLinks: \"HIDEDL\",\n onlyLiveTechnologies: \"LIVEONLY\",\n noMetaData: \"NOMETA\",\n noAttributeData: \"NOATTR\",\n noPII: \"NOPII\",\n};\n\n/**\n * Create a BuiltWith API client.\n *\n * @param apiKey - Your BuiltWith API key.\n * @param moduleParams - Optional client configuration (e.g. response format).\n * @returns A {@link BuiltWithClient} with methods for each BuiltWith API endpoint.\n *\n * @example\n * ```ts\n * import { createClient } from \"builtwith-api\";\n *\n * const client = createClient(process.env.BUILTWITH_API_KEY!);\n *\n * // Free lookup\n * const profile = await client.free(\"example.com\");\n *\n * // Domain lookup with filters\n * const details = await client.domain(\"example.com\", {\n * onlyLiveTechnologies: true,\n * });\n *\n * // Multi-domain lookup\n * const multi = await client.domain([\"example.com\", \"other.com\"]);\n * ```\n */\nexport function createClient(apiKey: string, moduleParams: ClientOptions = {}): BuiltWithClient {\n if (!apiKey) {\n throw new Error(\"You must initialize the BuiltWith module with an api key\");\n }\n\n const parsed = ClientOptionsSchema.parse(moduleParams);\n const format: ResponseFormat = parsed.responseFormat || \"json\";\n\n if (format === VALID_RESPONSE_TYPES.TXT) {\n console.warn(\n \"TXT response format is only supported for the BuiltWith Lists API. See: https://api.builtwith.com/lists-api\",\n );\n }\n\n const url = (path: string, params: QueryParams) => buildURL(apiKey, format, path, params);\n const get = <T>(bwURL: string, schema: import(\"zod/v4\").ZodType<T>) => request(bwURL, format, schema);\n const getSafe = <T>(bwURL: string, schema: import(\"zod/v4\").ZodType<T>) => requestSafe(bwURL, format, schema);\n\n return {\n free: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"free1\", { LOOKUP: lookup }), FreeResponseSchema);\n },\n\n domain: async (lookup: string | string[], params?: DomainParams) => {\n validateLookup(lookup, { multi: true });\n if (params) DomainParamsSchema.parse(params);\n return get(\n url(\"v22\", {\n LOOKUP: Array.isArray(lookup) ? lookup.join(\",\") : lookup,\n ...booleanParams(params, DOMAIN_BOOLEANS),\n FDRANGE: params?.firstDetectedRange,\n LDRANGE: params?.lastDetectedRange,\n }),\n DomainResponseSchema,\n );\n },\n\n lists: async (technology: string, params?: ListsParams) => {\n if (params) ListsParamsSchema.parse(params);\n return getSafe(\n url(\"lists12\", {\n TECH: technology,\n META: params?.includeMetaData ? \"yes\" : undefined,\n OFFSET: params?.offset,\n SINCE: params?.since,\n }),\n ListsResponseSchema,\n );\n },\n\n relationships: async (lookup: string | string[]) => {\n validateLookup(lookup, { multi: true });\n return get(\n url(\"rv4\", {\n LOOKUP: Array.isArray(lookup) ? lookup.join(\",\") : lookup,\n }),\n RelationshipsResponseSchema,\n );\n },\n\n keywords: async (lookup: string | string[]) => {\n validateLookup(lookup, { multi: true });\n return get(\n url(\"kw2\", {\n LOOKUP: Array.isArray(lookup) ? lookup.join(\",\") : lookup,\n }),\n KeywordsResponseSchema,\n );\n },\n\n trends: async (technology: string, params?: TrendsParams) => {\n if (params) TrendsParamsSchema.parse(params);\n return getSafe(\n url(\"trends/v6\", {\n TECH: technology,\n DATE: params?.date,\n }),\n TrendsResponseSchema,\n );\n },\n\n companyToUrl: async (companyName: string, params?: CompanyToUrlParams) => {\n if (params) CompanyToUrlParamsSchema.parse(params);\n return get(\n url(\"ctu3\", {\n COMPANY: companyName,\n TLD: params?.tld,\n AMOUNT: params?.amount,\n }),\n CompanyToUrlResponseSchema,\n );\n },\n\n domainLive: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"ddlv2\", { LOOKUP: lookup }), DomainResponseSchema);\n },\n\n trust: async (lookup: string, params?: TrustParams) => {\n validateLookup(lookup);\n if (params) TrustParamsSchema.parse(params);\n return get(\n url(\"trustv1\", {\n LOOKUP: lookup,\n WORDS: cleanWords(params?.words),\n LIVE: params?.live ? \"yes\" : undefined,\n }),\n TrustResponseSchema,\n );\n },\n\n tags: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"tag1\", { LOOKUP: lookup }), TagsResponseSchema);\n },\n\n recommendations: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"rec1\", { LOOKUP: lookup }), RecommendationsResponseSchema);\n },\n\n redirects: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"redirect1\", { LOOKUP: lookup }), RedirectsResponseSchema);\n },\n\n product: async (query: string) => {\n return get(url(\"productv1\", { QUERY: query }), ProductResponseSchema);\n },\n };\n}\n\nexport type {\n BooleanMapping,\n BuiltWithClient,\n ClientOptions,\n CompanyToUrlParams,\n DomainParams,\n ListsParams,\n QueryParams,\n ResponseFormat,\n TrendsParams,\n TrustParams,\n} from \"./schemas.js\";\n"
8
+ "import { z } from \"zod/v4\";\nimport { VALID_RESPONSE_TYPES } from \"./config.js\";\nimport type { ResponseFormat } from \"./schemas.js\";\n\nconst TEXT_FORMATS: readonly ResponseFormat[] = [\n VALID_RESPONSE_TYPES.TXT,\n VALID_RESPONSE_TYPES.XML,\n VALID_RESPONSE_TYPES.CSV,\n VALID_RESPONSE_TYPES.TSV,\n];\n\nconst ApiErrorSchema = z.object({\n Errors: z.array(z.object({ Message: z.string() })),\n});\n\nfunction checkForApiError(data: unknown): void {\n const parsed = ApiErrorSchema.safeParse(data);\n if (parsed.success && parsed.data.Errors.length > 0) {\n const messages = parsed.data.Errors.map((e) => e.Message).join(\"; \");\n throw new Error(`BuiltWith API error: ${messages}`);\n }\n}\n\nexport const request = async <T>(url: string, format: ResponseFormat, schema: z.ZodType<T>): Promise<T | string> => {\n const res = await fetch(url);\n if (!res.ok) {\n const body = await res.text();\n throw new Error(`BuiltWith API error ${res.status}: ${body}`);\n }\n if (TEXT_FORMATS.includes(format)) {\n return res.text();\n }\n const raw = await res.text();\n let data: unknown;\n try {\n data = JSON.parse(raw);\n } catch {\n throw new Error(`BuiltWith returned invalid JSON: ${raw.slice(0, 200)}`);\n }\n checkForApiError(data);\n return schema.parse(data);\n};\n\nexport const requestSafe = async <T>(\n url: string,\n format: ResponseFormat,\n schema: z.ZodType<T>,\n): Promise<T | string> => {\n const res = await fetch(url);\n if (!res.ok) {\n const body = await res.text();\n throw new Error(`BuiltWith API error ${res.status}: ${body}`);\n }\n if (TEXT_FORMATS.includes(format)) {\n return res.text();\n }\n const raw = await res.text();\n let data: unknown;\n try {\n data = JSON.parse(raw);\n } catch {\n console.warn(\"BuiltWith sent an invalid JSON payload. Falling back to text parsing.\");\n return raw;\n }\n checkForApiError(data);\n return schema.parse(data);\n};\n",
9
+ "import { VALID_RESPONSE_TYPES } from \"./config.js\";\nimport { booleanParams, buildURL, cleanWords, validateLookup } from \"./params.js\";\nimport { request, requestSafe } from \"./request.js\";\nimport type {\n BooleanMapping,\n BuiltWithClient,\n ClientOptions,\n CompanyToUrlParams,\n DomainParams,\n ListsParams,\n QueryParams,\n ResponseFormat,\n TrendsParams,\n TrustParams,\n} from \"./schemas.js\";\nimport {\n ClientOptionsSchema,\n CompanyToUrlParamsSchema,\n CompanyToUrlResponseSchema,\n DomainParamsSchema,\n DomainResponseSchema,\n FreeResponseSchema,\n KeywordsResponseSchema,\n ListsParamsSchema,\n ListsResponseSchema,\n ProductResponseSchema,\n RecommendationsResponseSchema,\n RedirectsResponseSchema,\n RelationshipsResponseSchema,\n TagsResponseSchema,\n TrendsParamsSchema,\n TrendsResponseSchema,\n TrustParamsSchema,\n TrustResponseSchema,\n} from \"./schemas.js\";\n\nconst DOMAIN_BOOLEANS: BooleanMapping = {\n hideAll: \"HIDETEXT\",\n hideDescriptionAndLinks: \"HIDEDL\",\n onlyLiveTechnologies: \"LIVEONLY\",\n noMetaData: \"NOMETA\",\n noAttributeData: \"NOATTR\",\n noPII: \"NOPII\",\n includeTrust: \"TRUST\",\n};\n\n/**\n * Create a BuiltWith API client.\n *\n * @param apiKey - Your BuiltWith API key.\n * @param moduleParams - Optional client configuration (e.g. response format).\n * @returns A {@link BuiltWithClient} with methods for each BuiltWith API endpoint.\n *\n * @example\n * ```ts\n * import { createClient } from \"builtwith-api\";\n *\n * const client = createClient(process.env.BUILTWITH_API_KEY!);\n *\n * // Free lookup\n * const profile = await client.free(\"example.com\");\n *\n * // Domain lookup with filters\n * const details = await client.domain(\"example.com\", {\n * onlyLiveTechnologies: true,\n * });\n *\n * // Multi-domain lookup\n * const multi = await client.domain([\"example.com\", \"other.com\"]);\n * ```\n */\nexport function createClient(apiKey: string, moduleParams: ClientOptions = {}): BuiltWithClient {\n if (!apiKey) {\n throw new Error(\"You must initialize the BuiltWith module with an api key\");\n }\n\n const parsed = ClientOptionsSchema.parse(moduleParams);\n const format: ResponseFormat = parsed.responseFormat || \"json\";\n\n if (format === VALID_RESPONSE_TYPES.TXT) {\n console.warn(\n \"TXT response format is only supported for the BuiltWith Lists API. See: https://api.builtwith.com/lists-api\",\n );\n }\n\n const url = (path: string, params: QueryParams) => buildURL(apiKey, format, path, params);\n const get = <T>(bwURL: string, schema: import(\"zod/v4\").ZodType<T>) => request(bwURL, format, schema);\n const getSafe = <T>(bwURL: string, schema: import(\"zod/v4\").ZodType<T>) => requestSafe(bwURL, format, schema);\n\n return {\n free: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"free1\", { LOOKUP: lookup }), FreeResponseSchema);\n },\n\n domain: async (lookup: string | string[], params?: DomainParams) => {\n validateLookup(lookup, { multi: true });\n if (params) DomainParamsSchema.parse(params);\n return get(\n url(\"v23\", {\n LOOKUP: Array.isArray(lookup) ? lookup.join(\",\") : lookup,\n ...booleanParams(params, DOMAIN_BOOLEANS),\n FDRANGE: params?.firstDetectedRange,\n LDRANGE: params?.lastDetectedRange,\n }),\n DomainResponseSchema,\n );\n },\n\n lists: async (technology: string, params?: ListsParams) => {\n if (params) ListsParamsSchema.parse(params);\n return getSafe(\n url(\"lists12\", {\n TECH: technology,\n META: params?.includeMetaData ? \"yes\" : undefined,\n OFFSET: params?.offset,\n SINCE: params?.since,\n }),\n ListsResponseSchema,\n );\n },\n\n relationships: async (lookup: string | string[]) => {\n validateLookup(lookup, { multi: true });\n return get(\n url(\"rv4\", {\n LOOKUP: Array.isArray(lookup) ? lookup.join(\",\") : lookup,\n }),\n RelationshipsResponseSchema,\n );\n },\n\n keywords: async (lookup: string | string[]) => {\n validateLookup(lookup, { multi: true });\n return get(\n url(\"kw2\", {\n LOOKUP: Array.isArray(lookup) ? lookup.join(\",\") : lookup,\n }),\n KeywordsResponseSchema,\n );\n },\n\n trends: async (technology: string, params?: TrendsParams) => {\n if (params) TrendsParamsSchema.parse(params);\n return getSafe(\n url(\"trends/v6\", {\n TECH: technology,\n DATE: params?.date,\n }),\n TrendsResponseSchema,\n );\n },\n\n companyToUrl: async (companyName: string, params?: CompanyToUrlParams) => {\n if (params) CompanyToUrlParamsSchema.parse(params);\n return get(\n url(\"ctu3\", {\n COMPANY: companyName,\n TLD: params?.tld,\n AMOUNT: params?.amount,\n }),\n CompanyToUrlResponseSchema,\n );\n },\n\n domainLive: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"ddlv2\", { LOOKUP: lookup }), DomainResponseSchema);\n },\n\n trust: async (lookup: string, params?: TrustParams) => {\n validateLookup(lookup);\n if (params) TrustParamsSchema.parse(params);\n return get(\n url(\"trustv1\", {\n LOOKUP: lookup,\n WORDS: cleanWords(params?.words),\n LIVE: params?.live ? \"yes\" : undefined,\n }),\n TrustResponseSchema,\n );\n },\n\n tags: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"tag1\", { LOOKUP: lookup }), TagsResponseSchema);\n },\n\n recommendations: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"rec1\", { LOOKUP: lookup }), RecommendationsResponseSchema);\n },\n\n redirects: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"redirect1\", { LOOKUP: lookup }), RedirectsResponseSchema);\n },\n\n product: async (query: string) => {\n return get(url(\"productv1\", { QUERY: query }), ProductResponseSchema);\n },\n };\n}\n\nexport type {\n BooleanMapping,\n BuiltWithClient,\n ClientOptions,\n CompanyToUrlParams,\n DomainParams,\n ListsParams,\n QueryParams,\n ResponseFormat,\n TrendsParams,\n TrustParams,\n} from \"./schemas.js\";\n"
10
10
  ],
11
- "mappings": "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",
12
- "debugId": "4FAA4EF09F1A022A64756E2164756E21",
11
+ "mappings": "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",
12
+ "debugId": "C31144578E6E139464756E2164756E21",
13
13
  "names": []
14
14
  }
package/dist/request.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { z } from "zod/v4";
1
+ import { z } from "zod/v4";
2
2
  import type { ResponseFormat } from "./schemas.js";
3
3
  export declare const request: <T>(url: string, format: ResponseFormat, schema: z.ZodType<T>) => Promise<T | string>;
4
4
  export declare const requestSafe: <T>(url: string, format: ResponseFormat, schema: z.ZodType<T>) => Promise<T | string>;
@@ -1 +1 @@
1
- {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AASnD,eAAO,MAAM,OAAO,GAAU,CAAC,EAAE,KAAK,MAAM,EAAE,QAAQ,cAAc,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,GAAG,MAAM,CAW9G,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,CAAC,EACjC,KAAK,MAAM,EACX,QAAQ,cAAc,EACtB,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KACnB,OAAO,CAAC,CAAC,GAAG,MAAM,CAkBpB,CAAC"}
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAqBnD,eAAO,MAAM,OAAO,GAAU,CAAC,EAAE,KAAK,MAAM,EAAE,QAAQ,cAAc,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,GAAG,MAAM,CAkB9G,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,CAAC,EACjC,KAAK,MAAM,EACX,QAAQ,cAAc,EACtB,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KACnB,OAAO,CAAC,CAAC,GAAG,MAAM,CAmBpB,CAAC"}
package/dist/schemas.d.ts CHANGED
@@ -41,6 +41,7 @@ export declare const DomainParamsSchema: z.ZodObject<{
41
41
  noMetaData: z.ZodOptional<z.ZodBoolean>;
42
42
  noAttributeData: z.ZodOptional<z.ZodBoolean>;
43
43
  noPII: z.ZodOptional<z.ZodBoolean>;
44
+ includeTrust: z.ZodOptional<z.ZodBoolean>;
44
45
  firstDetectedRange: z.ZodOptional<z.ZodString>;
45
46
  lastDetectedRange: z.ZodOptional<z.ZodString>;
46
47
  }, z.core.$strict>;
@@ -148,6 +149,7 @@ export declare const DomainResponseSchema: z.ZodObject<{
148
149
  Spend: z.ZodNumber;
149
150
  Paths: z.ZodArray<z.ZodObject<{
150
151
  Technologies: z.ZodArray<z.ZodObject<{
152
+ Id: z.ZodNumber;
151
153
  Name: z.ZodString;
152
154
  Description: z.ZodString;
153
155
  Link: z.ZodString;
@@ -167,8 +169,9 @@ export declare const DomainResponseSchema: z.ZodObject<{
167
169
  }, z.core.$strict>;
168
170
  Meta: z.ZodObject<{
169
171
  Majestic: z.ZodNumber;
172
+ Umbrella: z.ZodOptional<z.ZodNumber>;
170
173
  Vertical: z.ZodString;
171
- Social: z.ZodArray<z.ZodString>;
174
+ Social: z.ZodOptional<z.ZodArray<z.ZodString>>;
172
175
  CompanyName: z.ZodString;
173
176
  Telephones: z.ZodArray<z.ZodString>;
174
177
  Emails: z.ZodArray<z.ZodString>;
@@ -198,6 +201,21 @@ export declare const DomainResponseSchema: z.ZodObject<{
198
201
  CDimensions: z.ZodNumber;
199
202
  CGoals: z.ZodNumber;
200
203
  CMetrics: z.ZodNumber;
204
+ Followers: z.ZodOptional<z.ZodNumber>;
205
+ Employees: z.ZodOptional<z.ZodNumber>;
206
+ ProductCount: z.ZodOptional<z.ZodNumber>;
207
+ Revenue: z.ZodOptional<z.ZodNumber>;
208
+ PageRank: z.ZodOptional<z.ZodNumber>;
209
+ BWRank: z.ZodOptional<z.ZodNumber>;
210
+ Tranco: z.ZodOptional<z.ZodNumber>;
211
+ BWS: z.ZodOptional<z.ZodNumber>;
212
+ EcommerceCategory: z.ZodOptional<z.ZodNumber>;
213
+ TTFB: z.ZodOptional<z.ZodNumber>;
214
+ SourceBytes: z.ZodOptional<z.ZodNumber>;
215
+ AIMaturity: z.ZodOptional<z.ZodNumber>;
216
+ AIOpenness: z.ZodOptional<z.ZodNumber>;
217
+ AIReadiness: z.ZodOptional<z.ZodNumber>;
218
+ AIVisibility: z.ZodOptional<z.ZodNumber>;
201
219
  }, z.core.$strict>;
202
220
  FirstIndexed: z.ZodNumber;
203
221
  LastIndexed: z.ZodNumber;
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "builtwith-api",
3
- "version": "3.2.0",
4
- "description": "Typed TypeScript wrapper for the BuiltWith API — library and CLI",
3
+ "version": "3.3.0",
4
+ "description": "TypeScript library and CLI for the BuiltWith API",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",