builtwith-api 1.0.8 → 3.1.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/index.js ADDED
@@ -0,0 +1,474 @@
1
+ // src/config.ts
2
+ var VALID_RESPONSE_TYPES = {
3
+ XML: "xml",
4
+ JSON: "json",
5
+ TXT: "txt",
6
+ CSV: "csv",
7
+ TSV: "tsv"
8
+ };
9
+
10
+ // src/schemas.ts
11
+ import { z } from "zod/v4";
12
+ var ResponseFormatSchema = z.enum(["xml", "json", "txt", "csv", "tsv"]);
13
+ var ClientOptionsSchema = z.strictObject({
14
+ responseFormat: ResponseFormatSchema.optional()
15
+ });
16
+ var DomainParamsSchema = z.strictObject({
17
+ hideAll: z.boolean().optional(),
18
+ hideDescriptionAndLinks: z.boolean().optional(),
19
+ onlyLiveTechnologies: z.boolean().optional(),
20
+ noMetaData: z.boolean().optional(),
21
+ noAttributeData: z.boolean().optional(),
22
+ noPII: z.boolean().optional(),
23
+ firstDetectedRange: z.string().optional(),
24
+ lastDetectedRange: z.string().optional()
25
+ });
26
+ var ListsParamsSchema = z.strictObject({
27
+ includeMetaData: z.boolean().optional(),
28
+ offset: z.string().optional(),
29
+ since: z.string().optional()
30
+ });
31
+ var TrendsParamsSchema = z.strictObject({
32
+ date: z.string().optional()
33
+ });
34
+ var CompanyToUrlParamsSchema = z.strictObject({
35
+ tld: z.string().optional(),
36
+ amount: z.number().optional()
37
+ });
38
+ var TrustParamsSchema = z.strictObject({
39
+ words: z.string().optional(),
40
+ live: z.boolean().optional()
41
+ });
42
+ var SingleLookupSchema = z.string().min(1);
43
+ var MultiLookupSchema = z.union([
44
+ z.string().min(1),
45
+ z.array(z.string().min(1)).min(1).max(16)
46
+ ]);
47
+ var FreeResponseSchema = z.object({
48
+ domain: z.string(),
49
+ first: z.number(),
50
+ last: z.number(),
51
+ groups: z.array(z.object({
52
+ name: z.string(),
53
+ live: z.number(),
54
+ dead: z.number(),
55
+ latest: z.number(),
56
+ oldest: z.number(),
57
+ categories: z.array(z.object({
58
+ live: z.number(),
59
+ dead: z.number(),
60
+ latest: z.number(),
61
+ oldest: z.number(),
62
+ name: z.string()
63
+ }))
64
+ }))
65
+ });
66
+ var TechnologySchema = z.object({
67
+ Name: z.string(),
68
+ Description: z.string(),
69
+ Link: z.string(),
70
+ Parent: z.string().optional(),
71
+ Tag: z.string(),
72
+ FirstDetected: z.number(),
73
+ LastDetected: z.number(),
74
+ IsPremium: z.string(),
75
+ Categories: z.array(z.string()).optional()
76
+ });
77
+ var PathSchema = z.object({
78
+ Technologies: z.array(TechnologySchema),
79
+ FirstIndexed: z.number(),
80
+ LastIndexed: z.number(),
81
+ Domain: z.string(),
82
+ Url: z.string(),
83
+ SubDomain: z.string()
84
+ });
85
+ var MetaSchema = z.object({
86
+ Majestic: z.number(),
87
+ Vertical: z.string(),
88
+ Social: z.array(z.string()),
89
+ CompanyName: z.string(),
90
+ Telephones: z.array(z.string()),
91
+ Emails: z.array(z.string()),
92
+ City: z.string(),
93
+ State: z.string(),
94
+ Postcode: z.string(),
95
+ Country: z.string(),
96
+ Names: z.array(z.object({
97
+ Name: z.string(),
98
+ Type: z.number(),
99
+ Level: z.string(),
100
+ Email: z.string()
101
+ })),
102
+ ARank: z.number(),
103
+ QRank: z.number()
104
+ });
105
+ var AttributesSchema = z.object({
106
+ MJRank: z.number(),
107
+ MJTLDRank: z.number(),
108
+ RefSN: z.number(),
109
+ RefIP: z.number(),
110
+ Sitemap: z.number(),
111
+ GTMTags: z.number(),
112
+ QubitTags: z.number(),
113
+ TealiumTags: z.number(),
114
+ AdobeTags: z.number(),
115
+ CDimensions: z.number(),
116
+ CGoals: z.number(),
117
+ CMetrics: z.number()
118
+ });
119
+ var DomainResponseSchema = z.object({
120
+ Results: z.array(z.object({
121
+ Result: z.object({
122
+ SpendHistory: z.array(z.object({
123
+ D: z.number(),
124
+ S: z.number()
125
+ })),
126
+ IsDB: z.string(),
127
+ Spend: z.number(),
128
+ Paths: z.array(PathSchema)
129
+ }),
130
+ Meta: MetaSchema,
131
+ Attributes: AttributesSchema,
132
+ FirstIndexed: z.number(),
133
+ LastIndexed: z.number(),
134
+ Lookup: z.string(),
135
+ SalesRevenue: z.number()
136
+ })),
137
+ Errors: z.array(z.string())
138
+ });
139
+ var ListsResponseSchema = z.object({
140
+ NextOffset: z.string(),
141
+ Results: z.array(z.object({
142
+ D: z.string(),
143
+ FI: z.number().optional(),
144
+ LI: z.number().optional(),
145
+ LOS: z.array(z.string()).optional(),
146
+ Q: z.number().optional(),
147
+ A: z.number().optional(),
148
+ U: z.number().optional(),
149
+ M: z.number().optional(),
150
+ SKU: z.number().optional(),
151
+ F: z.number().optional(),
152
+ E: z.number().optional(),
153
+ FD: z.number().optional(),
154
+ LD: z.number().optional(),
155
+ S: z.number().optional(),
156
+ R: z.number().optional(),
157
+ Country: z.string().optional()
158
+ }))
159
+ });
160
+ var RelationshipsResponseSchema = z.object({
161
+ Relationships: z.array(z.object({
162
+ Domain: z.string(),
163
+ Identifiers: z.array(z.object({
164
+ Value: z.string(),
165
+ Type: z.string(),
166
+ First: z.number(),
167
+ Last: z.number(),
168
+ Matches: z.array(z.object({
169
+ Domain: z.string(),
170
+ First: z.number(),
171
+ Last: z.number(),
172
+ Overlap: z.boolean()
173
+ }))
174
+ }))
175
+ })),
176
+ Errors: z.array(z.string()),
177
+ results: z.number(),
178
+ max_per_page: z.number(),
179
+ next_skip: z.number(),
180
+ more_results: z.boolean()
181
+ });
182
+ var KeywordsResponseSchema = z.object({
183
+ Keywords: z.array(z.object({
184
+ Domain: z.string(),
185
+ Keywords: z.array(z.string())
186
+ }))
187
+ });
188
+ var TrendsResponseSchema = z.object({
189
+ Tech: z.object({
190
+ icon: z.string(),
191
+ categories: z.array(z.string()),
192
+ tag: z.string(),
193
+ is_premium: z.string(),
194
+ name: z.string(),
195
+ description: z.string(),
196
+ link: z.string(),
197
+ trends_link: z.string(),
198
+ coverage: z.object({
199
+ ten_k: z.number(),
200
+ hundred_k: z.number(),
201
+ milly: z.number(),
202
+ live: z.number(),
203
+ expired: z.number()
204
+ })
205
+ })
206
+ });
207
+ var CompanyToUrlResponseSchema = z.array(z.object({
208
+ Domain: z.string(),
209
+ CompanyName: z.string(),
210
+ Spend: z.number(),
211
+ PageRank: z.number(),
212
+ BuiltWithRank: z.number(),
213
+ Parked: z.boolean(),
214
+ Country: z.string(),
215
+ State: z.string(),
216
+ Postcode: z.string(),
217
+ City: z.string(),
218
+ Socials: z.array(z.string())
219
+ }));
220
+ var TrustResponseSchema = z.object({
221
+ Domain: z.string(),
222
+ DBRecord: z.object({
223
+ EarliestRecord: z.number(),
224
+ LatestUpdate: z.number(),
225
+ PremiumTechs: z.number(),
226
+ LiveTechs: z.boolean(),
227
+ AffiliateLinks: z.boolean(),
228
+ PaymentOptions: z.boolean(),
229
+ Ecommerce: z.boolean(),
230
+ Parked: z.boolean(),
231
+ Spend: z.number(),
232
+ Established: z.boolean(),
233
+ DBIndexed: z.boolean()
234
+ }),
235
+ LiveRecord: z.object({}).passthrough().nullable(),
236
+ Status: z.number()
237
+ });
238
+ var TagsResponseSchema = z.array(z.object({
239
+ Value: z.string(),
240
+ Matches: z.array(z.object({
241
+ Domain: z.string(),
242
+ First: z.string(),
243
+ Last: z.string()
244
+ }))
245
+ }));
246
+ var RecommendationsResponseSchema = z.array(z.object({
247
+ Domain: z.string(),
248
+ Compiled: z.string(),
249
+ Recommendations: z.array(z.object({
250
+ link: z.string(),
251
+ name: z.string(),
252
+ tag: z.string(),
253
+ categories: z.array(z.string()),
254
+ stars: z.number(),
255
+ match: z.number()
256
+ }))
257
+ }));
258
+ var RedirectsResponseSchema = z.object({
259
+ Lookup: z.string(),
260
+ Inbound: z.array(z.object({
261
+ Domain: z.string(),
262
+ FirstDetected: z.string(),
263
+ LastDetected: z.string()
264
+ })),
265
+ Outbound: z.array(z.object({
266
+ Domain: z.string(),
267
+ FirstDetected: z.string(),
268
+ LastDetected: z.string()
269
+ }))
270
+ });
271
+ var ProductResponseSchema = z.object({
272
+ query: z.string(),
273
+ is_more: z.boolean(),
274
+ page: z.number(),
275
+ limit: z.number(),
276
+ results: z.number(),
277
+ shop_count: z.number(),
278
+ credits: z.number(),
279
+ used: z.number(),
280
+ remaining: z.number(),
281
+ used_this_query: z.number(),
282
+ next_page: z.string(),
283
+ shops: z.array(z.object({
284
+ Domain: z.string(),
285
+ Products: z.array(z.object({
286
+ Title: z.string(),
287
+ Url: z.string(),
288
+ Indexed: z.string(),
289
+ FirstIndexed: z.string(),
290
+ Price: z.number()
291
+ })),
292
+ Type: z.number(),
293
+ Spend: z.number()
294
+ }))
295
+ });
296
+
297
+ // src/params.ts
298
+ var toQueryString = (params) => Object.entries(params).filter((entry) => entry[1] !== undefined).map(([k, v]) => `${k}=${encodeURIComponent(v).replace(/%2C/gi, ",")}`).join("&");
299
+ var booleanFlag = (value) => value ? "yes" : undefined;
300
+ var booleanParams = (params, mapping) => Object.fromEntries(Object.entries(mapping).map(([jsKey, apiKey]) => [
301
+ apiKey,
302
+ booleanFlag(params?.[jsKey])
303
+ ]));
304
+ var cleanWords = (words) => words ? words.split(",").map((w) => w.trim()).join(",") : undefined;
305
+ var buildURL = (apiKey, format, path, params, subdomain = "api") => {
306
+ const base = `https://${subdomain}.builtwith.com/${path}/api.${format}?KEY=${apiKey}`;
307
+ const qs = toQueryString(params);
308
+ return qs ? `${base}&${qs}` : base;
309
+ };
310
+ var validateLookup = (url, { multi = false } = {}) => {
311
+ if (multi) {
312
+ MultiLookupSchema.parse(url);
313
+ } else {
314
+ SingleLookupSchema.parse(url);
315
+ }
316
+ if (Array.isArray(url)) {
317
+ if (!multi)
318
+ throw new Error("API does not allow for multi-domain LOOKUP");
319
+ if (url.length > 16)
320
+ throw new Error("Domain LOOKUP size too big (16 max)");
321
+ }
322
+ };
323
+
324
+ // src/request.ts
325
+ var TEXT_FORMATS = [
326
+ VALID_RESPONSE_TYPES.TXT,
327
+ VALID_RESPONSE_TYPES.XML,
328
+ VALID_RESPONSE_TYPES.CSV,
329
+ VALID_RESPONSE_TYPES.TSV
330
+ ];
331
+ var request = async (url, format, schema) => {
332
+ const res = await fetch(url);
333
+ if (!res.ok) {
334
+ const body = await res.text();
335
+ throw new Error(`BuiltWith API error ${res.status}: ${body}`);
336
+ }
337
+ if (TEXT_FORMATS.includes(format)) {
338
+ return res.text();
339
+ }
340
+ const data = await res.json();
341
+ return schema.parse(data);
342
+ };
343
+ var requestSafe = async (url, format, schema) => {
344
+ const res = await fetch(url);
345
+ if (!res.ok) {
346
+ const body = await res.text();
347
+ throw new Error(`BuiltWith API error ${res.status}: ${body}`);
348
+ }
349
+ if (TEXT_FORMATS.includes(format)) {
350
+ return res.text();
351
+ }
352
+ const raw = await res.text();
353
+ let data;
354
+ try {
355
+ data = JSON.parse(raw);
356
+ } catch {
357
+ console.warn("BuiltWith sent an invalid JSON payload. Falling back to text parsing.");
358
+ return raw;
359
+ }
360
+ return schema.parse(data);
361
+ };
362
+
363
+ // src/index.ts
364
+ var DOMAIN_BOOLEANS = {
365
+ hideAll: "HIDETEXT",
366
+ hideDescriptionAndLinks: "HIDEDL",
367
+ onlyLiveTechnologies: "LIVEONLY",
368
+ noMetaData: "NOMETA",
369
+ noAttributeData: "NOATTR",
370
+ noPII: "NOPII"
371
+ };
372
+ function createClient(apiKey, moduleParams = {}) {
373
+ if (!apiKey) {
374
+ throw new Error("You must initialize the BuiltWith module with an api key");
375
+ }
376
+ const parsed = ClientOptionsSchema.parse(moduleParams);
377
+ const format = parsed.responseFormat || "json";
378
+ if (format === VALID_RESPONSE_TYPES.TXT) {
379
+ console.warn("TXT response format is only supported for the BuiltWith Lists API. See: https://api.builtwith.com/lists-api");
380
+ }
381
+ const url = (path, params) => buildURL(apiKey, format, path, params);
382
+ const get = (bwURL, schema) => request(bwURL, format, schema);
383
+ const getSafe = (bwURL, schema) => requestSafe(bwURL, format, schema);
384
+ return {
385
+ free: async (lookup) => {
386
+ validateLookup(lookup);
387
+ return get(url("free1", { LOOKUP: lookup }), FreeResponseSchema);
388
+ },
389
+ domain: async (lookup, params) => {
390
+ validateLookup(lookup, { multi: true });
391
+ if (params)
392
+ DomainParamsSchema.parse(params);
393
+ return get(url("v22", {
394
+ LOOKUP: Array.isArray(lookup) ? lookup.join(",") : lookup,
395
+ ...booleanParams(params, DOMAIN_BOOLEANS),
396
+ FDRANGE: params?.firstDetectedRange,
397
+ LDRANGE: params?.lastDetectedRange
398
+ }), DomainResponseSchema);
399
+ },
400
+ lists: async (technology, params) => {
401
+ if (params)
402
+ ListsParamsSchema.parse(params);
403
+ return getSafe(url("lists12", {
404
+ TECH: technology,
405
+ META: params?.includeMetaData ? "yes" : undefined,
406
+ OFFSET: params?.offset,
407
+ SINCE: params?.since
408
+ }), ListsResponseSchema);
409
+ },
410
+ relationships: async (lookup) => {
411
+ validateLookup(lookup, { multi: true });
412
+ return get(url("rv4", {
413
+ LOOKUP: Array.isArray(lookup) ? lookup.join(",") : lookup
414
+ }), RelationshipsResponseSchema);
415
+ },
416
+ keywords: async (lookup) => {
417
+ validateLookup(lookup, { multi: true });
418
+ return get(url("kw2", {
419
+ LOOKUP: Array.isArray(lookup) ? lookup.join(",") : lookup
420
+ }), KeywordsResponseSchema);
421
+ },
422
+ trends: async (technology, params) => {
423
+ if (params)
424
+ TrendsParamsSchema.parse(params);
425
+ return getSafe(url("trends/v6", {
426
+ TECH: technology,
427
+ DATE: params?.date
428
+ }), TrendsResponseSchema);
429
+ },
430
+ companyToUrl: async (companyName, params) => {
431
+ if (params)
432
+ CompanyToUrlParamsSchema.parse(params);
433
+ return get(url("ctu3", {
434
+ COMPANY: companyName,
435
+ TLD: params?.tld,
436
+ AMOUNT: params?.amount
437
+ }), CompanyToUrlResponseSchema);
438
+ },
439
+ domainLive: async (lookup) => {
440
+ validateLookup(lookup);
441
+ return get(url("ddlv2", { LOOKUP: lookup }), DomainResponseSchema);
442
+ },
443
+ trust: async (lookup, params) => {
444
+ validateLookup(lookup);
445
+ if (params)
446
+ TrustParamsSchema.parse(params);
447
+ return get(url("trustv1", {
448
+ LOOKUP: lookup,
449
+ WORDS: cleanWords(params?.words),
450
+ LIVE: params?.live ? "yes" : undefined
451
+ }), TrustResponseSchema);
452
+ },
453
+ tags: async (lookup) => {
454
+ validateLookup(lookup);
455
+ return get(url("tag1", { LOOKUP: lookup }), TagsResponseSchema);
456
+ },
457
+ recommendations: async (lookup) => {
458
+ validateLookup(lookup);
459
+ return get(url("rec1", { LOOKUP: lookup }), RecommendationsResponseSchema);
460
+ },
461
+ redirects: async (lookup) => {
462
+ validateLookup(lookup);
463
+ return get(url("redirect1", { LOOKUP: lookup }), RedirectsResponseSchema);
464
+ },
465
+ product: async (query) => {
466
+ return get(url("productv1", { QUERY: query }), ProductResponseSchema);
467
+ }
468
+ };
469
+ }
470
+ export {
471
+ createClient
472
+ };
473
+
474
+ //# debugId=34F3D27F9B83215E64756E2164756E21
@@ -0,0 +1,14 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/config.ts", "../src/schemas.ts", "../src/params.ts", "../src/request.ts", "../src/index.ts"],
4
+ "sourcesContent": [
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\nexport const ResponseFormatSchema = z.enum([\"xml\", \"json\", \"txt\", \"csv\", \"tsv\"]);\nexport type ResponseFormat = z.infer<typeof ResponseFormatSchema>;\n\nexport const ClientOptionsSchema = z.strictObject({\n responseFormat: ResponseFormatSchema.optional(),\n});\nexport type ClientOptions = z.infer<typeof ClientOptionsSchema>;\n\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().optional(),\n lastDetectedRange: z.string().optional(),\n});\nexport type DomainParams = z.infer<typeof DomainParamsSchema>;\n\nexport const ListsParamsSchema = z.strictObject({\n includeMetaData: z.boolean().optional(),\n offset: z.string().optional(),\n since: z.string().optional(),\n});\nexport type ListsParams = z.infer<typeof ListsParamsSchema>;\n\nexport const TrendsParamsSchema = z.strictObject({\n date: z.string().optional(),\n});\nexport type TrendsParams = z.infer<typeof TrendsParamsSchema>;\n\nexport const CompanyToUrlParamsSchema = z.strictObject({\n tld: z.string().optional(),\n amount: z.number().optional(),\n});\nexport type CompanyToUrlParams = z.infer<typeof CompanyToUrlParamsSchema>;\n\nexport const TrustParamsSchema = z.strictObject({\n words: z.string().optional(),\n live: z.boolean().optional(),\n});\nexport type TrustParams = z.infer<typeof TrustParamsSchema>;\n\nexport const SingleLookupSchema = z.string().min(1);\nexport const MultiLookupSchema = z.union([\n z.string().min(1),\n z.array(z.string().min(1)).min(1).max(16),\n]);\n\n// ─── Response Schemas ────────────────────────────────────────────────────────\n// Use z.object() (loose/passthrough) to tolerate extra fields from the API\n\nexport const FreeResponseSchema = z.object({\n domain: z.string(),\n first: z.number(),\n last: z.number(),\n groups: z.array(\n z.object({\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.object({\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});\nexport type FreeResponse = z.infer<typeof FreeResponseSchema>;\n\nconst TechnologySchema = z.object({\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.object({\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.object({\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.object({\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.object({\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\nexport const DomainResponseSchema = z.object({\n Results: z.array(\n z.object({\n Result: z.object({\n SpendHistory: z.array(\n z.object({\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});\nexport type DomainResponse = z.infer<typeof DomainResponseSchema>;\n\nexport const ListsResponseSchema = z.object({\n NextOffset: z.string(),\n Results: z.array(\n z.object({\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});\nexport type ListsResponse = z.infer<typeof ListsResponseSchema>;\n\nexport const RelationshipsResponseSchema = z.object({\n Relationships: z.array(\n z.object({\n Domain: z.string(),\n Identifiers: z.array(\n z.object({\n Value: z.string(),\n Type: z.string(),\n First: z.number(),\n Last: z.number(),\n Matches: z.array(\n z.object({\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});\nexport type RelationshipsResponse = z.infer<typeof RelationshipsResponseSchema>;\n\nexport const KeywordsResponseSchema = z.object({\n Keywords: z.array(\n z.object({\n Domain: z.string(),\n Keywords: z.array(z.string()),\n }),\n ),\n});\nexport type KeywordsResponse = z.infer<typeof KeywordsResponseSchema>;\n\nexport const TrendsResponseSchema = z.object({\n Tech: z.object({\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.object({\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});\nexport type TrendsResponse = z.infer<typeof TrendsResponseSchema>;\n\nexport const CompanyToUrlResponseSchema = z.array(\n z.object({\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);\nexport type CompanyToUrlResponse = z.infer<typeof CompanyToUrlResponseSchema>;\n\nexport const TrustResponseSchema = z.object({\n Domain: z.string(),\n DBRecord: z.object({\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 LiveRecord: z.object({}).passthrough().nullable(),\n Status: z.number(),\n});\nexport type TrustResponse = z.infer<typeof TrustResponseSchema>;\n\nexport const TagsResponseSchema = z.array(\n z.object({\n Value: z.string(),\n Matches: z.array(\n z.object({\n Domain: z.string(),\n First: z.string(),\n Last: z.string(),\n }),\n ),\n }),\n);\nexport type TagsResponse = z.infer<typeof TagsResponseSchema>;\n\nexport const RecommendationsResponseSchema = z.array(\n z.object({\n Domain: z.string(),\n Compiled: z.string(),\n Recommendations: z.array(\n z.object({\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);\nexport type RecommendationsResponse = z.infer<typeof RecommendationsResponseSchema>;\n\nexport const RedirectsResponseSchema = z.object({\n Lookup: z.string(),\n Inbound: z.array(\n z.object({\n Domain: z.string(),\n FirstDetected: z.string(),\n LastDetected: z.string(),\n }),\n ),\n Outbound: z.array(\n z.object({\n Domain: z.string(),\n FirstDetected: z.string(),\n LastDetected: z.string(),\n }),\n ),\n});\nexport type RedirectsResponse = z.infer<typeof RedirectsResponseSchema>;\n\nexport const ProductResponseSchema = z.object({\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.object({\n Domain: z.string(),\n Products: z.array(\n z.object({\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});\nexport type ProductResponse = z.infer<typeof ProductResponseSchema>;\n\n// ─── Client Interface ────────────────────────────────────────────────────────\n\nexport interface BuiltWithClient {\n free(lookup: string): Promise<FreeResponse | string>;\n domain(lookup: string | string[], params?: DomainParams): Promise<DomainResponse | string>;\n lists(technology: string, params?: ListsParams): Promise<ListsResponse | string>;\n relationships(lookup: string | string[]): Promise<RelationshipsResponse | string>;\n keywords(lookup: string | string[]): Promise<KeywordsResponse | string>;\n trends(technology: string, params?: TrendsParams): Promise<TrendsResponse | string>;\n companyToUrl(companyName: string, params?: CompanyToUrlParams): Promise<CompanyToUrlResponse | string>;\n domainLive(lookup: string): Promise<DomainResponse | string>;\n trust(lookup: string, params?: TrustParams): Promise<TrustResponse | string>;\n tags(lookup: string): Promise<TagsResponse | string>;\n recommendations(lookup: string): Promise<RecommendationsResponse | string>;\n redirects(lookup: string): Promise<RedirectsResponse | string>;\n product(query: string): Promise<ProductResponse | string>;\n}\n\n// ─── Utility Types ───────────────────────────────────────────────────────────\n\nexport type BooleanMapping = Record<string, string>;\nexport type QueryParams = Record<string, string | number | undefined>;\n",
7
+ "import { SingleLookupSchema, MultiLookupSchema } from \"./schemas.js\";\nimport type { BooleanMapping, QueryParams } 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 =>\n value ? \"yes\" : undefined;\n\nexport const booleanParams = (\n params: Record<string, unknown> | null | undefined,\n mapping: BooleanMapping,\n): QueryParams =>\n Object.fromEntries(\n Object.entries(mapping).map(([jsKey, apiKey]) => [\n apiKey,\n booleanFlag(params?.[jsKey]),\n ]),\n );\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 = (\n url: string | string[],\n { multi = false }: { multi?: boolean } = {},\n): 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>(\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 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(\n \"BuiltWith sent an invalid JSON payload. Falling back to text parsing.\",\n );\n return raw;\n }\n return schema.parse(data);\n};\n",
9
+ "import { VALID_RESPONSE_TYPES } from \"./config.js\";\nimport { buildURL, booleanParams, cleanWords, validateLookup } from \"./params.js\";\nimport { request, requestSafe } from \"./request.js\";\nimport {\n ResponseFormatSchema,\n ClientOptionsSchema,\n DomainParamsSchema,\n ListsParamsSchema,\n TrendsParamsSchema,\n CompanyToUrlParamsSchema,\n TrustParamsSchema,\n FreeResponseSchema,\n DomainResponseSchema,\n ListsResponseSchema,\n RelationshipsResponseSchema,\n KeywordsResponseSchema,\n TrendsResponseSchema,\n CompanyToUrlResponseSchema,\n TrustResponseSchema,\n TagsResponseSchema,\n RecommendationsResponseSchema,\n RedirectsResponseSchema,\n ProductResponseSchema,\n} from \"./schemas.js\";\nimport type {\n ResponseFormat,\n ClientOptions,\n DomainParams,\n ListsParams,\n TrendsParams,\n CompanyToUrlParams,\n TrustParams,\n BuiltWithClient,\n BooleanMapping,\n QueryParams,\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\nexport function createClient(\n apiKey: string,\n moduleParams: ClientOptions = {},\n): 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) =>\n buildURL(apiKey, format, path, params);\n const get = <T>(bwURL: string, schema: import(\"zod/v4\").ZodType<T>) =>\n request(bwURL, format, schema);\n const getSafe = <T>(bwURL: string, schema: import(\"zod/v4\").ZodType<T>) =>\n 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 ResponseFormat,\n ClientOptions,\n DomainParams,\n ListsParams,\n TrendsParams,\n CompanyToUrlParams,\n TrustParams,\n BuiltWithClient,\n BooleanMapping,\n QueryParams,\n} from \"./schemas.js\";\n"
10
+ ],
11
+ "mappings": "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",
12
+ "debugId": "34F3D27F9B83215E64756E2164756E21",
13
+ "names": []
14
+ }
package/dist/mcp.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":""}