scavio 0.4.0 → 0.5.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.cjs +175 -37
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +454 -24
- package/dist/index.d.ts +454 -24
- package/dist/index.js +171 -36
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -1,33 +1,58 @@
|
|
|
1
1
|
interface AmazonSearchOptions {
|
|
2
|
+
/** Product search query (1-500 characters). */
|
|
2
3
|
query: string;
|
|
4
|
+
/** Amazon domain suffix (default 'com', e.g. 'co.uk'). */
|
|
3
5
|
domain?: string;
|
|
6
|
+
/** Country code for localization. */
|
|
4
7
|
country?: string;
|
|
8
|
+
/** Language code. */
|
|
5
9
|
language?: string;
|
|
10
|
+
/** Currency code (ISO 4217, e.g. 'USD'). */
|
|
6
11
|
currency?: string;
|
|
7
|
-
|
|
8
|
-
|
|
12
|
+
/** Device to emulate. */
|
|
13
|
+
device?: "desktop" | "mobile" | "tablet";
|
|
14
|
+
/** Result sort order. */
|
|
15
|
+
sort_by?: "most_recent" | "price_low_to_high" | "price_high_to_low" | "featured" | "average_review" | "bestsellers";
|
|
16
|
+
/** Starting page (1-indexed). */
|
|
9
17
|
start_page?: number;
|
|
18
|
+
/** Number of pages to fetch. */
|
|
10
19
|
pages?: number;
|
|
20
|
+
/** Amazon category id. */
|
|
11
21
|
category_id?: string;
|
|
22
|
+
/** Filter to a specific merchant. */
|
|
12
23
|
merchant_id?: string;
|
|
24
|
+
/** ZIP/postal code for localized pricing. */
|
|
13
25
|
zip_code?: string;
|
|
26
|
+
/** Auto-select the default variant. */
|
|
14
27
|
autoselect_variant?: boolean;
|
|
28
|
+
[key: string]: unknown;
|
|
15
29
|
}
|
|
16
30
|
interface AmazonProductOptions {
|
|
31
|
+
/** Amazon ASIN (e.g. 'B09XS7JWHH'). Sent to the API as 'query'. */
|
|
17
32
|
asin: string;
|
|
33
|
+
/** Amazon domain suffix (default 'com'). */
|
|
18
34
|
domain?: string;
|
|
35
|
+
/** Country code for localization. */
|
|
19
36
|
country?: string;
|
|
37
|
+
/** Language code. */
|
|
20
38
|
language?: string;
|
|
39
|
+
/** Currency code (ISO 4217, e.g. 'USD'). */
|
|
21
40
|
currency?: string;
|
|
22
|
-
|
|
41
|
+
/** Device to emulate. */
|
|
42
|
+
device?: "desktop" | "mobile" | "tablet";
|
|
43
|
+
/** ZIP/postal code for localized pricing. */
|
|
23
44
|
zip_code?: string;
|
|
45
|
+
/** Auto-select the default variant. */
|
|
24
46
|
autoselect_variant?: boolean;
|
|
47
|
+
[key: string]: unknown;
|
|
25
48
|
}
|
|
26
49
|
declare class AmazonNamespace {
|
|
27
50
|
private client;
|
|
28
51
|
constructor(client: Scavio);
|
|
29
52
|
search(options: AmazonSearchOptions): Promise<Record<string, unknown>>;
|
|
30
53
|
product(options: AmazonProductOptions): Promise<Record<string, unknown>>;
|
|
54
|
+
/** Supported Amazon domains, languages, currencies, and countries. */
|
|
55
|
+
options(): Promise<Record<string, unknown>>;
|
|
31
56
|
}
|
|
32
57
|
|
|
33
58
|
/**
|
|
@@ -37,70 +62,319 @@ declare class AmazonNamespace {
|
|
|
37
62
|
* See https://scavio.dev/docs/search-api.
|
|
38
63
|
*/
|
|
39
64
|
interface GoogleSearchOptions {
|
|
65
|
+
/** Search query (1-500 characters). */
|
|
40
66
|
query: string;
|
|
67
|
+
/** Device to emulate. */
|
|
68
|
+
device?: "desktop" | "mobile";
|
|
69
|
+
/** Result offset: 0 = page 1, 10 = page 2, ... up to 990. */
|
|
70
|
+
start?: number;
|
|
71
|
+
/** Include the raw Google HTML in the response. */
|
|
72
|
+
include_html?: boolean;
|
|
73
|
+
/** UI language (ISO 639-1, e.g. 'en'). */
|
|
74
|
+
hl?: string;
|
|
75
|
+
/** Country of the search (ISO 3166-1 alpha-2, e.g. 'us'). */
|
|
76
|
+
gl?: string;
|
|
77
|
+
/** Regional Google domain (e.g. 'google.co.uk'). */
|
|
78
|
+
google_domain?: string;
|
|
79
|
+
/** Canonical location name; auto-encoded to a UULE string. */
|
|
80
|
+
location?: string;
|
|
81
|
+
/** Pre-encoded UULE location string (takes priority over location). */
|
|
82
|
+
uule?: string;
|
|
83
|
+
/** Language restrict (e.g. 'lang_en'). */
|
|
84
|
+
lr?: string;
|
|
85
|
+
/** Country restrict (e.g. 'countryUS'). */
|
|
86
|
+
cr?: string;
|
|
87
|
+
/** SafeSearch filter. */
|
|
88
|
+
safe?: "active";
|
|
89
|
+
/** Disable spelling correction / auto-fixes when true. */
|
|
90
|
+
nfpr?: boolean;
|
|
91
|
+
/** '0' disables the omitted/similar-results filter. */
|
|
92
|
+
filter?: "0" | "1";
|
|
93
|
+
/** Restrict results to a recent time window. */
|
|
94
|
+
time_period?: "last_hour" | "last_day" | "last_week" | "last_month" | "last_year";
|
|
95
|
+
/** Resolve a deferred AI Overview (server default true). */
|
|
96
|
+
resolve_ai_overview?: boolean;
|
|
41
97
|
[key: string]: unknown;
|
|
42
98
|
}
|
|
43
99
|
interface GoogleAiModeOptions {
|
|
100
|
+
/** Question or prompt (1-500 characters). */
|
|
44
101
|
query: string;
|
|
102
|
+
/** Device to emulate. */
|
|
103
|
+
device?: "desktop" | "mobile";
|
|
104
|
+
/** Include the raw Google HTML in the response. */
|
|
105
|
+
include_html?: boolean;
|
|
106
|
+
/** UI language (ISO 639-1, e.g. 'en'). */
|
|
107
|
+
hl?: string;
|
|
108
|
+
/** Country of the search (ISO 3166-1 alpha-2, e.g. 'us'). */
|
|
109
|
+
gl?: string;
|
|
110
|
+
/** Regional Google domain (e.g. 'google.co.uk'). */
|
|
111
|
+
google_domain?: string;
|
|
112
|
+
/** Canonical location name; auto-encoded to a UULE string. */
|
|
113
|
+
location?: string;
|
|
114
|
+
/** Pre-encoded UULE location string (takes priority over location). */
|
|
115
|
+
uule?: string;
|
|
116
|
+
/** SafeSearch filter. */
|
|
117
|
+
safe?: "active";
|
|
45
118
|
[key: string]: unknown;
|
|
46
119
|
}
|
|
47
120
|
interface GoogleMapsSearchOptions {
|
|
121
|
+
/** Search query (1-500 characters). */
|
|
48
122
|
query: string;
|
|
123
|
+
/** Result offset; must be a multiple of 20 (0, 20, 40, ...). */
|
|
124
|
+
start?: number;
|
|
125
|
+
/** Map center as '@lat,lng,zoomz'; controls where results come from. */
|
|
126
|
+
ll?: string;
|
|
127
|
+
/** UI language (ISO 639-1, e.g. 'en'). */
|
|
128
|
+
hl?: string;
|
|
129
|
+
/** Country of the search (ISO 3166-1 alpha-2, e.g. 'us'). */
|
|
130
|
+
gl?: string;
|
|
131
|
+
/** Regional Google domain (e.g. 'google.co.uk'). */
|
|
132
|
+
google_domain?: string;
|
|
49
133
|
[key: string]: unknown;
|
|
50
134
|
}
|
|
51
135
|
interface GoogleMapsPlaceOptions {
|
|
136
|
+
/** Place ID (ChIJ...). */
|
|
52
137
|
place_id?: string;
|
|
138
|
+
/** Numeric CID. */
|
|
53
139
|
data_cid?: string;
|
|
54
140
|
[key: string]: unknown;
|
|
55
141
|
}
|
|
56
142
|
interface GoogleMapsReviewsOptions {
|
|
143
|
+
/** Data ID (0xHEX:0xHEX). */
|
|
57
144
|
data_id?: string;
|
|
145
|
+
/** Place ID (ChIJ...). */
|
|
58
146
|
place_id?: string;
|
|
147
|
+
/** Reviews per page (1-20). */
|
|
148
|
+
num?: number;
|
|
149
|
+
/** Pagination cursor from a prior response. */
|
|
150
|
+
next_page_token?: string;
|
|
151
|
+
/** Sort order. */
|
|
152
|
+
sort_by?: "relevance" | "newest" | "highest_rating" | "lowest_rating";
|
|
153
|
+
/** UI language (ISO 639-1, e.g. 'en'). */
|
|
154
|
+
hl?: string;
|
|
155
|
+
/** Country of the search (ISO 3166-1 alpha-2, e.g. 'us'). */
|
|
156
|
+
gl?: string;
|
|
157
|
+
/** Regional Google domain (e.g. 'google.co.uk'). */
|
|
158
|
+
google_domain?: string;
|
|
59
159
|
[key: string]: unknown;
|
|
60
160
|
}
|
|
61
161
|
interface GoogleShoppingOptions {
|
|
162
|
+
/** Product search query (1-500 characters). */
|
|
62
163
|
query: string;
|
|
164
|
+
/** Device to emulate. */
|
|
165
|
+
device?: "desktop" | "mobile";
|
|
166
|
+
/** Result offset. */
|
|
167
|
+
start?: number;
|
|
168
|
+
/** Minimum price filter. */
|
|
169
|
+
min_price?: number;
|
|
170
|
+
/** Maximum price filter. */
|
|
171
|
+
max_price?: number;
|
|
172
|
+
/** 0 = relevance, 1 = price ascending, 2 = price descending. */
|
|
173
|
+
sort_by?: number;
|
|
174
|
+
/** Only items with free shipping. */
|
|
175
|
+
free_shipping?: boolean;
|
|
176
|
+
/** Only items on sale. */
|
|
177
|
+
on_sale?: boolean;
|
|
178
|
+
/** Opaque Google Shopping filter token. */
|
|
179
|
+
shoprs?: string;
|
|
180
|
+
/** UI language (ISO 639-1, e.g. 'en'). */
|
|
181
|
+
hl?: string;
|
|
182
|
+
/** Country of the search (ISO 3166-1 alpha-2, e.g. 'us'). */
|
|
183
|
+
gl?: string;
|
|
184
|
+
/** Regional Google domain (e.g. 'google.co.uk'). */
|
|
185
|
+
google_domain?: string;
|
|
186
|
+
/** Canonical location name; auto-encoded to a UULE string. */
|
|
187
|
+
location?: string;
|
|
188
|
+
/** Pre-encoded UULE location string (takes priority over location). */
|
|
189
|
+
uule?: string;
|
|
63
190
|
[key: string]: unknown;
|
|
64
191
|
}
|
|
65
192
|
interface GoogleShoppingProductOptions {
|
|
193
|
+
/** Durable product catalog id. */
|
|
66
194
|
catalog_id?: string;
|
|
195
|
+
/** Product query; required when catalog_id is set. */
|
|
67
196
|
query?: string;
|
|
197
|
+
/** Immersive product page token. */
|
|
198
|
+
immersive_product_page_token?: string;
|
|
199
|
+
/** Alias for immersive_product_page_token. */
|
|
200
|
+
page_token?: string;
|
|
201
|
+
/** Product id. */
|
|
68
202
|
product_id?: string;
|
|
203
|
+
/** Device to emulate. */
|
|
204
|
+
device?: "desktop" | "mobile" | "tablet";
|
|
205
|
+
/** Regional Google domain (e.g. 'google.co.uk'). */
|
|
206
|
+
google_domain?: string;
|
|
207
|
+
/** Seller sort order. */
|
|
208
|
+
sort_by?: "base_price" | "total_price" | "promotion" | "seller_rating";
|
|
209
|
+
/** Load all available stores. */
|
|
210
|
+
load_all_stores?: boolean;
|
|
211
|
+
/** Fetch additional stores. */
|
|
212
|
+
more_stores?: boolean;
|
|
213
|
+
/** UI language (ISO 639-1, e.g. 'en'). */
|
|
214
|
+
hl?: string;
|
|
215
|
+
/** Country of the search (ISO 3166-1 alpha-2, e.g. 'us'). */
|
|
216
|
+
gl?: string;
|
|
217
|
+
/** Canonical location name; auto-encoded to a UULE string. */
|
|
218
|
+
location?: string;
|
|
219
|
+
/** Pre-encoded UULE location string (takes priority over location). */
|
|
220
|
+
uule?: string;
|
|
69
221
|
[key: string]: unknown;
|
|
70
222
|
}
|
|
71
223
|
interface GoogleShoppingStoresOptions {
|
|
224
|
+
/** Durable product catalog id. */
|
|
72
225
|
catalog_id: string;
|
|
226
|
+
/** Pagination cursor from shopping_product. */
|
|
73
227
|
next_page_token: string;
|
|
74
228
|
[key: string]: unknown;
|
|
75
229
|
}
|
|
76
230
|
interface GoogleFlightsOptions {
|
|
231
|
+
/** Departure IATA code(s); comma-separated allowed. */
|
|
77
232
|
departure_id: string;
|
|
233
|
+
/** Arrival IATA code(s); comma-separated allowed. */
|
|
78
234
|
arrival_id: string;
|
|
235
|
+
/** Outbound date (YYYY-MM-DD). */
|
|
79
236
|
outbound_date: string;
|
|
237
|
+
/** 1 = round trip, 2 = one way, 3 = multi-city. */
|
|
238
|
+
type?: number;
|
|
239
|
+
/** Return date (YYYY-MM-DD); required when type=1. */
|
|
240
|
+
return_date?: string;
|
|
241
|
+
/** Number of adults (1-9). */
|
|
242
|
+
adults?: number;
|
|
243
|
+
/** Number of children (0-9). */
|
|
244
|
+
children?: number;
|
|
245
|
+
/** Infants in seat (0-4). */
|
|
246
|
+
infants_in_seat?: number;
|
|
247
|
+
/** Infants on lap (0-4). */
|
|
248
|
+
infants_on_lap?: number;
|
|
249
|
+
/** 1 = economy, 2 = premium, 3 = business, 4 = first. */
|
|
250
|
+
travel_class?: number;
|
|
251
|
+
/** 0 = any, 1 = nonstop, 2 = <=1 stop, 3 = <=2 stops. */
|
|
252
|
+
stops?: number;
|
|
253
|
+
/** 1 = top, 2 = price, 3 = departure, 4 = arrival, 5 = duration, 6 = emissions. */
|
|
254
|
+
sort_by?: number;
|
|
255
|
+
/** Comma-separated airline codes/alliances to include. */
|
|
256
|
+
include_airlines?: string;
|
|
257
|
+
/** Comma-separated airline codes/alliances to exclude. */
|
|
258
|
+
exclude_airlines?: string;
|
|
259
|
+
/** UI language (ISO 639-1, e.g. 'en'). */
|
|
260
|
+
hl?: string;
|
|
261
|
+
/** Country of the search (ISO 3166-1 alpha-2, e.g. 'us'). */
|
|
262
|
+
gl?: string;
|
|
263
|
+
/** Currency code (ISO 4217, e.g. 'USD'). */
|
|
264
|
+
currency?: string;
|
|
80
265
|
[key: string]: unknown;
|
|
81
266
|
}
|
|
82
267
|
interface GoogleHotelsOptions {
|
|
268
|
+
/** Search query; use a '<City> hotels' form. */
|
|
83
269
|
query: string;
|
|
270
|
+
/** Check-in date (YYYY-MM-DD). */
|
|
84
271
|
check_in_date: string;
|
|
272
|
+
/** Check-out date (YYYY-MM-DD). */
|
|
85
273
|
check_out_date: string;
|
|
274
|
+
/** UI language (ISO 639-1, e.g. 'en'). */
|
|
275
|
+
hl?: string;
|
|
276
|
+
/** Country of the search (ISO 3166-1 alpha-2, e.g. 'us'). */
|
|
277
|
+
gl?: string;
|
|
278
|
+
/** Currency code (ISO 4217, e.g. 'USD'). */
|
|
279
|
+
currency?: string;
|
|
280
|
+
/** 3 = lowest price, 8 = highest rating, 13 = most reviewed. */
|
|
281
|
+
sort_by?: number;
|
|
282
|
+
/** Minimum nightly price. */
|
|
283
|
+
min_price?: number;
|
|
284
|
+
/** Maximum nightly price. */
|
|
285
|
+
max_price?: number;
|
|
286
|
+
/** 7 = 3.5+, 8 = 4.0+, 9 = 4.5+. */
|
|
287
|
+
rating?: number;
|
|
288
|
+
/** Comma-separated star ratings (2-5). */
|
|
289
|
+
hotel_class?: string;
|
|
290
|
+
/** Comma-separated amenity ids. */
|
|
291
|
+
amenities?: string;
|
|
292
|
+
/** Comma-separated property-type ids (e.g. '12' for vacation rentals). */
|
|
293
|
+
property_types?: string;
|
|
294
|
+
/** Only properties with free cancellation. */
|
|
295
|
+
free_cancellation?: boolean;
|
|
296
|
+
/** Only eco-certified properties. */
|
|
297
|
+
eco_certified?: boolean;
|
|
298
|
+
/** Only properties with special offers. */
|
|
299
|
+
special_offers?: boolean;
|
|
300
|
+
/** Pagination cursor from a prior response. */
|
|
301
|
+
next_page_token?: string;
|
|
302
|
+
/** Number of properties to return (1-20). */
|
|
303
|
+
limit?: number;
|
|
86
304
|
[key: string]: unknown;
|
|
87
305
|
}
|
|
88
306
|
interface GoogleHotelsDetailOptions {
|
|
307
|
+
/** Property detail token from a hotels listing. */
|
|
89
308
|
detail_token: string;
|
|
309
|
+
/** Check-in date (YYYY-MM-DD). */
|
|
90
310
|
check_in_date: string;
|
|
311
|
+
/** Check-out date (YYYY-MM-DD). */
|
|
91
312
|
check_out_date: string;
|
|
313
|
+
/** Currency code (ISO 4217, e.g. 'USD'). */
|
|
314
|
+
currency?: string;
|
|
315
|
+
/** Country of the search (ISO 3166-1 alpha-2, e.g. 'us'). */
|
|
316
|
+
gl?: string;
|
|
317
|
+
/** UI language (ISO 639-1, e.g. 'en'). */
|
|
318
|
+
hl?: string;
|
|
92
319
|
[key: string]: unknown;
|
|
93
320
|
}
|
|
94
321
|
interface GoogleNewsOptions {
|
|
322
|
+
/** Keyword search. */
|
|
95
323
|
query?: string;
|
|
324
|
+
/** Browse a news topic. */
|
|
325
|
+
topic_token?: string;
|
|
326
|
+
/** Browse a topic section. */
|
|
327
|
+
section_token?: string;
|
|
328
|
+
/** Fetch full coverage of a story. */
|
|
329
|
+
story_token?: string;
|
|
330
|
+
/** Browse a publication. */
|
|
331
|
+
publication_token?: string;
|
|
332
|
+
/** Knowledge Graph entity id. */
|
|
333
|
+
kgmid?: string;
|
|
334
|
+
/** UI language (ISO 639-1, e.g. 'en'). */
|
|
335
|
+
hl?: string;
|
|
336
|
+
/** Country of the search (ISO 3166-1 alpha-2, e.g. 'us'). */
|
|
337
|
+
gl?: string;
|
|
338
|
+
/** Regional Google domain (e.g. 'google.co.uk'). */
|
|
339
|
+
google_domain?: string;
|
|
340
|
+
/** Sort order: 0 = relevance, 1 = date (only with query or kgmid). */
|
|
341
|
+
so?: number;
|
|
96
342
|
[key: string]: unknown;
|
|
97
343
|
}
|
|
98
344
|
interface GoogleTrendsOptions {
|
|
345
|
+
/** Search term(s); comma-separated for comparisons. */
|
|
99
346
|
query: string;
|
|
347
|
+
/** Location code (e.g. 'US', 'GB', 'US-CA'). */
|
|
348
|
+
geo?: string;
|
|
349
|
+
/** UI language (ISO 639-1, e.g. 'en'). */
|
|
350
|
+
hl?: string;
|
|
351
|
+
/** Time range (e.g. 'today 12-m', 'now 7-d'). */
|
|
352
|
+
date?: string;
|
|
353
|
+
/** Timezone offset in minutes. */
|
|
354
|
+
tz?: string;
|
|
355
|
+
/** Which trends dataset to return. */
|
|
356
|
+
data_type?: "TIMESERIES" | "GEO_MAP" | "GEO_MAP_0" | "RELATED_QUERIES" | "RELATED_TOPICS";
|
|
357
|
+
/** Category id. */
|
|
358
|
+
cat?: string;
|
|
359
|
+
/** Google property filter. */
|
|
360
|
+
gprop?: "images" | "news" | "youtube" | "froogle";
|
|
361
|
+
/** Resolution for GEO_MAP data. */
|
|
362
|
+
region?: "COUNTRY" | "REGION" | "DMA" | "CITY";
|
|
100
363
|
[key: string]: unknown;
|
|
101
364
|
}
|
|
102
365
|
interface GoogleTrendingOptions {
|
|
366
|
+
/** Country code (e.g. 'US'). */
|
|
103
367
|
geo: string;
|
|
368
|
+
/** UI language (ISO 639-1, e.g. 'en'). */
|
|
369
|
+
hl?: string;
|
|
370
|
+
/** Trending window: 4, 24, 48, or 168. */
|
|
371
|
+
hours?: number;
|
|
372
|
+
/** Category id (0-20). */
|
|
373
|
+
cat?: number;
|
|
374
|
+
/** Sort order. */
|
|
375
|
+
sort?: "relevance" | "search_volume" | "recency" | "title";
|
|
376
|
+
/** Filter by trend status. */
|
|
377
|
+
status?: "all" | "active";
|
|
104
378
|
[key: string]: unknown;
|
|
105
379
|
}
|
|
106
380
|
declare class GoogleNamespace {
|
|
@@ -137,13 +411,20 @@ declare class GoogleNamespace {
|
|
|
137
411
|
}
|
|
138
412
|
|
|
139
413
|
interface RedditSearchOptions {
|
|
414
|
+
/** Search query (1-500 characters). */
|
|
140
415
|
query: string;
|
|
141
|
-
type
|
|
142
|
-
|
|
416
|
+
/** Result type (server default 'posts'). */
|
|
417
|
+
type?: "posts" | "comments";
|
|
418
|
+
/** Sort order (server default 'new'). */
|
|
419
|
+
sort?: "new" | "relevance" | "hot" | "top" | "comments";
|
|
420
|
+
/** Pagination cursor from a prior response. */
|
|
143
421
|
cursor?: string;
|
|
422
|
+
[key: string]: unknown;
|
|
144
423
|
}
|
|
145
424
|
interface RedditPostOptions {
|
|
425
|
+
/** Full Reddit post URL. */
|
|
146
426
|
url: string;
|
|
427
|
+
[key: string]: unknown;
|
|
147
428
|
}
|
|
148
429
|
declare class RedditNamespace {
|
|
149
430
|
private client;
|
|
@@ -153,61 +434,107 @@ declare class RedditNamespace {
|
|
|
153
434
|
}
|
|
154
435
|
|
|
155
436
|
interface TikTokProfileOptions {
|
|
437
|
+
/** TikTok @username (without the @). */
|
|
156
438
|
username?: string;
|
|
439
|
+
/** TikTok sec_user_id. */
|
|
157
440
|
sec_user_id?: string;
|
|
441
|
+
[key: string]: unknown;
|
|
158
442
|
}
|
|
159
443
|
interface TikTokUserPostsOptions {
|
|
444
|
+
/** TikTok sec_user_id. */
|
|
160
445
|
sec_user_id: string;
|
|
446
|
+
/** Pagination cursor (default '0'). */
|
|
161
447
|
cursor?: string;
|
|
448
|
+
/** Results per page (1-30). */
|
|
162
449
|
count?: number;
|
|
163
|
-
|
|
450
|
+
/** '0' = latest, '1' = popular. */
|
|
451
|
+
sort_type?: "0" | "1";
|
|
452
|
+
[key: string]: unknown;
|
|
164
453
|
}
|
|
165
454
|
interface TikTokVideoOptions {
|
|
455
|
+
/** TikTok video id. */
|
|
166
456
|
video_id: string;
|
|
457
|
+
[key: string]: unknown;
|
|
167
458
|
}
|
|
168
459
|
interface TikTokVideoCommentsOptions {
|
|
460
|
+
/** TikTok video id. */
|
|
169
461
|
video_id: string;
|
|
462
|
+
/** Pagination cursor (default '0'). */
|
|
170
463
|
cursor?: string;
|
|
464
|
+
/** Results per page (1-50). */
|
|
171
465
|
count?: number;
|
|
466
|
+
[key: string]: unknown;
|
|
172
467
|
}
|
|
173
468
|
interface TikTokCommentRepliesOptions {
|
|
469
|
+
/** TikTok video id. */
|
|
174
470
|
video_id: string;
|
|
471
|
+
/** Parent comment id. */
|
|
175
472
|
comment_id: string;
|
|
473
|
+
/** Pagination cursor (default '0'). */
|
|
176
474
|
cursor?: string;
|
|
475
|
+
/** Results per page (1-50). */
|
|
177
476
|
count?: number;
|
|
477
|
+
[key: string]: unknown;
|
|
178
478
|
}
|
|
179
479
|
interface TikTokSearchVideosOptions {
|
|
480
|
+
/** Search keyword (1-500 characters). */
|
|
180
481
|
keyword: string;
|
|
482
|
+
/** Pagination cursor (default '0'). */
|
|
181
483
|
cursor?: string;
|
|
484
|
+
/** Results per page (1-30). */
|
|
182
485
|
count?: number;
|
|
183
|
-
|
|
184
|
-
|
|
486
|
+
/** '0' = relevance, '1' = most likes. */
|
|
487
|
+
sort_type?: "0" | "1";
|
|
488
|
+
/** Age filter in days: 0 = all time, 1, 7, 30, 90, 180. */
|
|
489
|
+
publish_time?: "0" | "1" | "7" | "30" | "90" | "180";
|
|
490
|
+
[key: string]: unknown;
|
|
185
491
|
}
|
|
186
492
|
interface TikTokSearchUsersOptions {
|
|
493
|
+
/** Search keyword (1-500 characters). */
|
|
187
494
|
keyword: string;
|
|
495
|
+
/** Pagination cursor (default '0'). */
|
|
188
496
|
cursor?: string;
|
|
497
|
+
/** Results per page (1-30). */
|
|
189
498
|
count?: number;
|
|
499
|
+
[key: string]: unknown;
|
|
190
500
|
}
|
|
191
501
|
interface TikTokHashtagOptions {
|
|
502
|
+
/** Hashtag name (without the #). */
|
|
192
503
|
hashtag_name?: string;
|
|
504
|
+
/** Hashtag id. */
|
|
193
505
|
hashtag_id?: string;
|
|
506
|
+
[key: string]: unknown;
|
|
194
507
|
}
|
|
195
508
|
interface TikTokHashtagVideosOptions {
|
|
509
|
+
/** Hashtag id. */
|
|
196
510
|
hashtag_id: string;
|
|
511
|
+
/** Pagination cursor (default '0'). */
|
|
197
512
|
cursor?: string;
|
|
513
|
+
/** Results per page (1-30). */
|
|
198
514
|
count?: number;
|
|
515
|
+
[key: string]: unknown;
|
|
199
516
|
}
|
|
200
517
|
interface TikTokUserFollowersOptions {
|
|
518
|
+
/** TikTok sec_user_id. */
|
|
201
519
|
sec_user_id: string;
|
|
520
|
+
/** Results per page (1-20). */
|
|
202
521
|
count?: number;
|
|
522
|
+
/** Pagination token from a prior response. */
|
|
203
523
|
page_token?: string;
|
|
524
|
+
/** Minimum timestamp cursor. */
|
|
204
525
|
min_time?: number;
|
|
526
|
+
[key: string]: unknown;
|
|
205
527
|
}
|
|
206
528
|
interface TikTokUserFollowingsOptions {
|
|
529
|
+
/** TikTok sec_user_id. */
|
|
207
530
|
sec_user_id: string;
|
|
531
|
+
/** Results per page (1-20). */
|
|
208
532
|
count?: number;
|
|
533
|
+
/** Pagination token from a prior response. */
|
|
209
534
|
page_token?: string;
|
|
535
|
+
/** Minimum timestamp cursor. */
|
|
210
536
|
min_time?: number;
|
|
537
|
+
[key: string]: unknown;
|
|
211
538
|
}
|
|
212
539
|
declare class TikTokNamespace {
|
|
213
540
|
private client;
|
|
@@ -226,44 +553,76 @@ declare class TikTokNamespace {
|
|
|
226
553
|
}
|
|
227
554
|
|
|
228
555
|
interface InstagramProfileOptions {
|
|
556
|
+
/** Instagram username (without the @). */
|
|
229
557
|
username?: string;
|
|
558
|
+
/** Instagram numeric user id. */
|
|
230
559
|
user_id?: string;
|
|
560
|
+
[key: string]: unknown;
|
|
231
561
|
}
|
|
232
562
|
interface InstagramUserFeedOptions {
|
|
563
|
+
/** Instagram username (without the @). */
|
|
233
564
|
username?: string;
|
|
565
|
+
/** Instagram numeric user id. */
|
|
234
566
|
user_id?: string;
|
|
567
|
+
/** Results per page (1-50). */
|
|
235
568
|
count?: number;
|
|
569
|
+
/** Pagination cursor from a prior response. */
|
|
236
570
|
cursor?: string;
|
|
571
|
+
[key: string]: unknown;
|
|
237
572
|
}
|
|
238
573
|
interface InstagramStoriesOptions {
|
|
574
|
+
/** Instagram username (without the @). */
|
|
239
575
|
username?: string;
|
|
576
|
+
/** Instagram numeric user id. */
|
|
240
577
|
user_id?: string;
|
|
578
|
+
[key: string]: unknown;
|
|
241
579
|
}
|
|
242
580
|
interface InstagramPostOptions {
|
|
581
|
+
/** Full Instagram post URL. */
|
|
243
582
|
url?: string;
|
|
583
|
+
/** Instagram media id. */
|
|
244
584
|
media_id?: string;
|
|
585
|
+
/** Instagram shortcode (from the post URL). */
|
|
245
586
|
shortcode?: string;
|
|
587
|
+
[key: string]: unknown;
|
|
246
588
|
}
|
|
247
589
|
interface InstagramPostCommentsOptions {
|
|
590
|
+
/** Instagram shortcode (from the post URL). */
|
|
248
591
|
shortcode?: string;
|
|
592
|
+
/** Full Instagram post URL. */
|
|
249
593
|
url?: string;
|
|
594
|
+
/** Pagination cursor from a prior response. */
|
|
250
595
|
cursor?: string;
|
|
251
|
-
|
|
596
|
+
/** Comment sort order. */
|
|
597
|
+
sort_order?: "popular" | "newest";
|
|
598
|
+
[key: string]: unknown;
|
|
252
599
|
}
|
|
253
600
|
interface InstagramCommentRepliesOptions {
|
|
601
|
+
/** Instagram media id. */
|
|
254
602
|
media_id: string;
|
|
603
|
+
/** Parent comment id. */
|
|
255
604
|
comment_id: string;
|
|
605
|
+
/** Pagination cursor from a prior response. */
|
|
256
606
|
cursor?: string;
|
|
607
|
+
[key: string]: unknown;
|
|
257
608
|
}
|
|
258
609
|
interface InstagramSearchOptions {
|
|
610
|
+
/** Search keyword (1-500 characters). */
|
|
259
611
|
keyword: string;
|
|
612
|
+
/** Pagination cursor from a prior response. */
|
|
260
613
|
cursor?: string;
|
|
614
|
+
[key: string]: unknown;
|
|
261
615
|
}
|
|
262
616
|
interface InstagramFollowOptions {
|
|
617
|
+
/** Instagram username (without the @). */
|
|
263
618
|
username?: string;
|
|
619
|
+
/** Instagram numeric user id. */
|
|
264
620
|
user_id?: string;
|
|
621
|
+
/** Results per page (1-100). */
|
|
265
622
|
count?: number;
|
|
623
|
+
/** Pagination cursor from a prior response. */
|
|
266
624
|
cursor?: string;
|
|
625
|
+
[key: string]: unknown;
|
|
267
626
|
}
|
|
268
627
|
declare class InstagramNamespace {
|
|
269
628
|
private client;
|
|
@@ -283,24 +642,42 @@ declare class InstagramNamespace {
|
|
|
283
642
|
}
|
|
284
643
|
|
|
285
644
|
interface WalmartSearchOptions {
|
|
645
|
+
/** Product search query (1-500 characters). */
|
|
286
646
|
query: string;
|
|
647
|
+
/** Walmart domain. */
|
|
287
648
|
domain?: string;
|
|
288
|
-
|
|
289
|
-
|
|
649
|
+
/** Device to emulate. */
|
|
650
|
+
device?: "desktop" | "mobile" | "tablet";
|
|
651
|
+
/** Result sort order. */
|
|
652
|
+
sort_by?: "best_match" | "price_low" | "price_high" | "best_seller";
|
|
653
|
+
/** Starting page (1-indexed). */
|
|
290
654
|
start_page?: number;
|
|
655
|
+
/** Minimum price filter (USD). */
|
|
291
656
|
min_price?: number;
|
|
657
|
+
/** Maximum price filter (USD). */
|
|
292
658
|
max_price?: number;
|
|
293
|
-
|
|
294
|
-
|
|
659
|
+
/** Delivery speed filter. */
|
|
660
|
+
fulfillment_speed?: "today" | "tomorrow" | "2_days" | "anytime";
|
|
661
|
+
/** Fulfillment type filter. */
|
|
662
|
+
fulfillment_type?: "in_store";
|
|
663
|
+
/** ZIP code for localized results. */
|
|
295
664
|
delivery_zip?: string;
|
|
665
|
+
/** Store id for in-store availability. */
|
|
296
666
|
store_id?: string;
|
|
667
|
+
[key: string]: unknown;
|
|
297
668
|
}
|
|
298
669
|
interface WalmartProductOptions {
|
|
670
|
+
/** Walmart product id. */
|
|
299
671
|
product_id: string;
|
|
672
|
+
/** Walmart domain. */
|
|
300
673
|
domain?: string;
|
|
301
|
-
|
|
674
|
+
/** Device to emulate. */
|
|
675
|
+
device?: "desktop" | "mobile" | "tablet";
|
|
676
|
+
/** ZIP code for localized pricing. */
|
|
302
677
|
delivery_zip?: string;
|
|
678
|
+
/** Store id for in-store availability. */
|
|
303
679
|
store_id?: string;
|
|
680
|
+
[key: string]: unknown;
|
|
304
681
|
}
|
|
305
682
|
declare class WalmartNamespace {
|
|
306
683
|
private client;
|
|
@@ -310,18 +687,42 @@ declare class WalmartNamespace {
|
|
|
310
687
|
}
|
|
311
688
|
|
|
312
689
|
interface YouTubeSearchOptions {
|
|
690
|
+
/** Search query (1-500 characters). Sent to the API as 'search'. */
|
|
313
691
|
query: string;
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
692
|
+
/** Filter by upload date. */
|
|
693
|
+
upload_date?: "last_hour" | "today" | "this_week" | "this_month" | "this_year";
|
|
694
|
+
/** Filter by result type. */
|
|
695
|
+
type?: "video" | "channel" | "playlist";
|
|
696
|
+
/** short (<4 min), medium (4-20 min), long (>20 min). */
|
|
697
|
+
duration?: "short" | "medium" | "long";
|
|
698
|
+
/** Sort order. */
|
|
699
|
+
sort_by?: "relevance" | "date" | "view_count" | "rating";
|
|
700
|
+
/** HD videos only. */
|
|
318
701
|
hd?: boolean;
|
|
702
|
+
/** Videos with subtitles/CC only. */
|
|
319
703
|
subtitles?: boolean;
|
|
704
|
+
/** Creative Commons licensed only. */
|
|
320
705
|
creative_commons?: boolean;
|
|
706
|
+
/** Live videos only. */
|
|
321
707
|
live?: boolean;
|
|
708
|
+
/** HDR videos only. */
|
|
709
|
+
hdr?: boolean;
|
|
710
|
+
/** Videos with location metadata only. */
|
|
711
|
+
location?: boolean;
|
|
712
|
+
/** VR180 videos only. */
|
|
713
|
+
vr180?: boolean;
|
|
714
|
+
/** 4K videos only. Sent to the API as '4k'. */
|
|
715
|
+
fourK?: boolean;
|
|
716
|
+
/** 360-degree videos only. Sent to the API as '360'. */
|
|
717
|
+
video_360?: boolean;
|
|
718
|
+
/** 3D videos only. Sent to the API as '3d'. */
|
|
719
|
+
video_3d?: boolean;
|
|
720
|
+
[key: string]: unknown;
|
|
322
721
|
}
|
|
323
722
|
interface YouTubeMetadataOptions {
|
|
723
|
+
/** YouTube video id (e.g. 'dQw4w9WgXcQ'). */
|
|
324
724
|
video_id: string;
|
|
725
|
+
[key: string]: unknown;
|
|
325
726
|
}
|
|
326
727
|
declare class YouTubeNamespace {
|
|
327
728
|
private client;
|
|
@@ -335,6 +736,12 @@ interface ScavioConfig {
|
|
|
335
736
|
baseUrl?: string;
|
|
336
737
|
timeout?: number;
|
|
337
738
|
maxRequestsPerSecond?: number;
|
|
739
|
+
/**
|
|
740
|
+
* Additional retry attempts after the first request on transient failures
|
|
741
|
+
* (HTTP 429/500/502/503/504 and network/timeout errors). Defaults to 2.
|
|
742
|
+
* Set to 0 to disable retries.
|
|
743
|
+
*/
|
|
744
|
+
maxRetries?: number;
|
|
338
745
|
}
|
|
339
746
|
declare class Scavio {
|
|
340
747
|
readonly google: GoogleNamespace;
|
|
@@ -347,6 +754,7 @@ declare class Scavio {
|
|
|
347
754
|
private readonly apiKey;
|
|
348
755
|
private readonly baseUrl;
|
|
349
756
|
private readonly timeout;
|
|
757
|
+
private readonly maxRetries;
|
|
350
758
|
private readonly rateLimiter;
|
|
351
759
|
constructor(config?: ScavioConfig);
|
|
352
760
|
/** @internal */
|
|
@@ -363,21 +771,43 @@ declare class ScavioError extends Error {
|
|
|
363
771
|
declare class MissingAPIKeyError extends ScavioError {
|
|
364
772
|
constructor();
|
|
365
773
|
}
|
|
366
|
-
|
|
774
|
+
/** The request could not reach the API (DNS, connection reset, TLS, ...). */
|
|
775
|
+
declare class ScavioConnectionError extends ScavioError {
|
|
367
776
|
constructor(message?: string);
|
|
368
777
|
}
|
|
369
|
-
|
|
778
|
+
/** The request did not complete within the configured timeout. */
|
|
779
|
+
declare class ScavioTimeoutError extends ScavioError {
|
|
370
780
|
constructor(message?: string);
|
|
371
781
|
}
|
|
782
|
+
declare class InvalidAPIKeyError extends ScavioError {
|
|
783
|
+
readonly statusCode = 401;
|
|
784
|
+
readonly responseBody?: Record<string, unknown>;
|
|
785
|
+
constructor(message?: string, responseBody?: Record<string, unknown>);
|
|
786
|
+
}
|
|
787
|
+
declare class InsufficientCreditsError extends ScavioError {
|
|
788
|
+
readonly statusCode = 402;
|
|
789
|
+
readonly responseBody?: Record<string, unknown>;
|
|
790
|
+
constructor(message?: string, responseBody?: Record<string, unknown>);
|
|
791
|
+
}
|
|
372
792
|
declare class BadRequestError extends ScavioError {
|
|
373
|
-
|
|
793
|
+
readonly statusCode = 400;
|
|
794
|
+
readonly responseBody?: Record<string, unknown>;
|
|
795
|
+
constructor(message?: string, responseBody?: Record<string, unknown>);
|
|
796
|
+
}
|
|
797
|
+
declare class NotFoundError extends ScavioError {
|
|
798
|
+
readonly statusCode = 404;
|
|
799
|
+
readonly responseBody?: Record<string, unknown>;
|
|
800
|
+
constructor(message?: string, responseBody?: Record<string, unknown>);
|
|
374
801
|
}
|
|
375
802
|
declare class RateLimitError extends ScavioError {
|
|
376
|
-
|
|
803
|
+
readonly statusCode = 429;
|
|
804
|
+
readonly responseBody?: Record<string, unknown>;
|
|
805
|
+
constructor(message?: string, responseBody?: Record<string, unknown>);
|
|
377
806
|
}
|
|
378
807
|
declare class ScavioAPIError extends ScavioError {
|
|
379
808
|
readonly statusCode: number;
|
|
380
|
-
|
|
809
|
+
readonly responseBody?: Record<string, unknown>;
|
|
810
|
+
constructor(statusCode: number, message: string, responseBody?: Record<string, unknown>);
|
|
381
811
|
}
|
|
382
812
|
|
|
383
|
-
export { type AmazonProductOptions, type AmazonSearchOptions, BadRequestError, type GoogleAiModeOptions, type GoogleFlightsOptions, type GoogleHotelsDetailOptions, type GoogleHotelsOptions, type GoogleMapsPlaceOptions, type GoogleMapsReviewsOptions, type GoogleMapsSearchOptions, type GoogleNewsOptions, type GoogleSearchOptions, type GoogleShoppingOptions, type GoogleShoppingProductOptions, type GoogleShoppingStoresOptions, type GoogleTrendingOptions, type GoogleTrendsOptions, type InstagramCommentRepliesOptions, type InstagramFollowOptions, type InstagramPostCommentsOptions, type InstagramPostOptions, type InstagramProfileOptions, type InstagramSearchOptions, type InstagramStoriesOptions, type InstagramUserFeedOptions, InsufficientCreditsError, InvalidAPIKeyError, MissingAPIKeyError, RateLimitError, type RedditPostOptions, type RedditSearchOptions, Scavio, ScavioAPIError, type ScavioConfig, ScavioError, type TikTokCommentRepliesOptions, type TikTokHashtagOptions, type TikTokHashtagVideosOptions, type TikTokProfileOptions, type TikTokSearchUsersOptions, type TikTokSearchVideosOptions, type TikTokUserFollowersOptions, type TikTokUserFollowingsOptions, type TikTokUserPostsOptions, type TikTokVideoCommentsOptions, type TikTokVideoOptions, type WalmartProductOptions, type WalmartSearchOptions, type YouTubeMetadataOptions, type YouTubeSearchOptions };
|
|
813
|
+
export { type AmazonProductOptions, type AmazonSearchOptions, BadRequestError, type GoogleAiModeOptions, type GoogleFlightsOptions, type GoogleHotelsDetailOptions, type GoogleHotelsOptions, type GoogleMapsPlaceOptions, type GoogleMapsReviewsOptions, type GoogleMapsSearchOptions, type GoogleNewsOptions, type GoogleSearchOptions, type GoogleShoppingOptions, type GoogleShoppingProductOptions, type GoogleShoppingStoresOptions, type GoogleTrendingOptions, type GoogleTrendsOptions, type InstagramCommentRepliesOptions, type InstagramFollowOptions, type InstagramPostCommentsOptions, type InstagramPostOptions, type InstagramProfileOptions, type InstagramSearchOptions, type InstagramStoriesOptions, type InstagramUserFeedOptions, InsufficientCreditsError, InvalidAPIKeyError, MissingAPIKeyError, NotFoundError, RateLimitError, type RedditPostOptions, type RedditSearchOptions, Scavio, ScavioAPIError, type ScavioConfig, ScavioConnectionError, ScavioError, ScavioTimeoutError, type TikTokCommentRepliesOptions, type TikTokHashtagOptions, type TikTokHashtagVideosOptions, type TikTokProfileOptions, type TikTokSearchUsersOptions, type TikTokSearchVideosOptions, type TikTokUserFollowersOptions, type TikTokUserFollowingsOptions, type TikTokUserPostsOptions, type TikTokVideoCommentsOptions, type TikTokVideoOptions, type WalmartProductOptions, type WalmartSearchOptions, type YouTubeMetadataOptions, type YouTubeSearchOptions };
|