scrapebadger 0.12.0 → 0.14.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 CHANGED
@@ -8,6 +8,9 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
8
 
9
9
  var WebSocket__default = /*#__PURE__*/_interopDefault(WebSocket);
10
10
 
11
+ // src/internal/version.ts
12
+ var SDK_VERSION = "0.13.1";
13
+
11
14
  // src/internal/exceptions.ts
12
15
  var ScrapeBadgerError = class _ScrapeBadgerError extends Error {
13
16
  constructor(message) {
@@ -156,7 +159,7 @@ var BaseClient = class {
156
159
  "Content-Type": "application/json",
157
160
  Accept: "application/json",
158
161
  "X-API-Key": this.config.apiKey,
159
- "User-Agent": "scrapebadger-node/0.3.1",
162
+ "User-Agent": `scrapebadger-node/${SDK_VERSION}`,
160
163
  ...headers
161
164
  };
162
165
  const fetchOptions = {
@@ -2528,6 +2531,19 @@ var SearchClient = class {
2528
2531
  * });
2529
2532
  * console.log(`Found ${results.pagination.total_entries} items`);
2530
2533
  * ```
2534
+ *
2535
+ * @example
2536
+ * ```typescript
2537
+ * // Filter results to sellers physically located in France or Belgium.
2538
+ * // Billing: 1 base credit + 1 credit per uncached seller looked up.
2539
+ * const local = await client.vinted.search.search({
2540
+ * query: "vintage jacket",
2541
+ * seller_country: "fr,be",
2542
+ * });
2543
+ * for (const item of local.items) {
2544
+ * console.log(`${item.title} — seller in ${item.seller_country_code}`);
2545
+ * }
2546
+ * ```
2531
2547
  */
2532
2548
  async search(params) {
2533
2549
  return this.client.request("/v1/vinted/search", {
@@ -2541,7 +2557,8 @@ var SearchClient = class {
2541
2557
  brand_ids: params.brand_ids,
2542
2558
  color_ids: params.color_ids,
2543
2559
  status_ids: params.status_ids,
2544
- order: params.order
2560
+ order: params.order,
2561
+ seller_country: params.seller_country
2545
2562
  }
2546
2563
  });
2547
2564
  }
@@ -4189,6 +4206,612 @@ var AmazonClient = class {
4189
4206
  }
4190
4207
  };
4191
4208
 
4209
+ // src/shopee/search.ts
4210
+ var SearchClient5 = class {
4211
+ client;
4212
+ constructor(client) {
4213
+ this.client = client;
4214
+ }
4215
+ /**
4216
+ * Search Shopee for products by keyword.
4217
+ *
4218
+ * @param params - Search parameters including keyword, market, pagination, and sort.
4219
+ * @returns Search result page with matched products and pagination metadata.
4220
+ * @throws AuthenticationError - If the API key is invalid.
4221
+ * @throws ValidationError - If the parameters are invalid.
4222
+ */
4223
+ async search(params) {
4224
+ return this.client.request("/v1/shopee/search", {
4225
+ params: {
4226
+ keyword: params.keyword,
4227
+ market: params.market,
4228
+ limit: params.limit,
4229
+ offset: params.offset,
4230
+ sort_by: params.sort_by
4231
+ }
4232
+ });
4233
+ }
4234
+ /**
4235
+ * List products within a specific Shopee category.
4236
+ *
4237
+ * @param categoryId - The Shopee category ID.
4238
+ * @param options - Optional parameters (market, limit, offset, sort_by).
4239
+ * @returns Search result page with products in the category.
4240
+ * @throws AuthenticationError - If the API key is invalid.
4241
+ * @throws ValidationError - If the category ID or market is invalid.
4242
+ */
4243
+ async categoryItems(categoryId, options = {}) {
4244
+ return this.client.request(
4245
+ `/v1/shopee/category/${categoryId}/items`,
4246
+ {
4247
+ params: {
4248
+ market: options.market,
4249
+ limit: options.limit,
4250
+ offset: options.offset,
4251
+ sort_by: options.sort_by
4252
+ }
4253
+ }
4254
+ );
4255
+ }
4256
+ };
4257
+
4258
+ // src/shopee/products.ts
4259
+ var ProductsClient3 = class {
4260
+ client;
4261
+ constructor(client) {
4262
+ this.client = client;
4263
+ }
4264
+ /**
4265
+ * Get full product detail (PDP) for a Shopee item.
4266
+ *
4267
+ * @param shopId - The Shopee shop identifier.
4268
+ * @param itemId - The Shopee item identifier.
4269
+ * @param options - Optional parameters (market).
4270
+ * @returns Full product detail including pricing, ratings, images, and variations.
4271
+ * @throws NotFoundError - If the product doesn't exist.
4272
+ * @throws AuthenticationError - If the API key is invalid.
4273
+ * @throws ValidationError - If the market code is invalid.
4274
+ */
4275
+ async get(shopId, itemId, options = {}) {
4276
+ return this.client.request(
4277
+ `/v1/shopee/product/${shopId}/${itemId}`,
4278
+ { params: { market: options.market } }
4279
+ );
4280
+ }
4281
+ };
4282
+
4283
+ // src/shopee/reviews.ts
4284
+ var ReviewsClient = class {
4285
+ client;
4286
+ constructor(client) {
4287
+ this.client = client;
4288
+ }
4289
+ /**
4290
+ * Get product reviews for a Shopee item.
4291
+ *
4292
+ * @param shopId - The Shopee shop identifier.
4293
+ * @param itemId - The Shopee item identifier.
4294
+ * @param options - Optional parameters (market, limit, offset, rating, filter).
4295
+ * @returns Reviews result page with review items and aggregate summary.
4296
+ * @throws NotFoundError - If the product doesn't exist.
4297
+ * @throws AuthenticationError - If the API key is invalid.
4298
+ * @throws ValidationError - If the parameters are invalid.
4299
+ */
4300
+ async get(shopId, itemId, options = {}) {
4301
+ return this.client.request(
4302
+ `/v1/shopee/product/${shopId}/${itemId}/reviews`,
4303
+ {
4304
+ params: {
4305
+ market: options.market,
4306
+ limit: options.limit,
4307
+ offset: options.offset,
4308
+ rating: options.rating,
4309
+ filter: options.filter
4310
+ }
4311
+ }
4312
+ );
4313
+ }
4314
+ };
4315
+
4316
+ // src/shopee/reference.ts
4317
+ var ReferenceClient3 = class {
4318
+ client;
4319
+ constructor(client) {
4320
+ this.client = client;
4321
+ }
4322
+ /**
4323
+ * Get all supported Shopee marketplaces.
4324
+ *
4325
+ * @returns Markets response with all supported Shopee markets (0 credits).
4326
+ */
4327
+ async markets() {
4328
+ return this.client.request("/v1/shopee/markets");
4329
+ }
4330
+ /**
4331
+ * Get the full category tree for a Shopee market.
4332
+ *
4333
+ * @param options - Optional parameters (market).
4334
+ * @returns Category tree with all top-level and nested category nodes.
4335
+ * @throws AuthenticationError - If the API key is invalid.
4336
+ * @throws ValidationError - If the market code is invalid.
4337
+ */
4338
+ async categories(options = {}) {
4339
+ return this.client.request("/v1/shopee/categories", {
4340
+ params: { market: options.market }
4341
+ });
4342
+ }
4343
+ };
4344
+
4345
+ // src/shopee/client.ts
4346
+ var ShopeeClient = class {
4347
+ /** Client for keyword search and category-item listing */
4348
+ search;
4349
+ /** Client for full product detail pages */
4350
+ products;
4351
+ /** Client for product reviews and rating summaries */
4352
+ reviews;
4353
+ /** Client for reference data (markets, category tree) */
4354
+ reference;
4355
+ /**
4356
+ * Create a new Shopee client.
4357
+ *
4358
+ * @param client - The base HTTP client for making requests.
4359
+ */
4360
+ constructor(client) {
4361
+ this.search = new SearchClient5(client);
4362
+ this.products = new ProductsClient3(client);
4363
+ this.reviews = new ReviewsClient(client);
4364
+ this.reference = new ReferenceClient3(client);
4365
+ }
4366
+ };
4367
+
4368
+ // src/tiktok/users.ts
4369
+ var UsersClient4 = class {
4370
+ client;
4371
+ constructor(client) {
4372
+ this.client = client;
4373
+ }
4374
+ /**
4375
+ * Get a TikTok user's full profile.
4376
+ *
4377
+ * @param username - The user's @handle (without the leading '@').
4378
+ * @param options - Optional parameters (region).
4379
+ * @returns The user profile response.
4380
+ * @throws NotFoundError - If the user doesn't exist.
4381
+ */
4382
+ async get(username, options = {}) {
4383
+ return this.client.request(`/v1/tiktok/users/${username}`, {
4384
+ params: { region: options.region }
4385
+ });
4386
+ }
4387
+ /**
4388
+ * Get a TikTok user's posted videos.
4389
+ *
4390
+ * @param username - The user's @handle.
4391
+ * @param options - Optional parameters (region, count, cursor).
4392
+ * @returns A cursor-paginated list of videos.
4393
+ */
4394
+ async videos(username, options = {}) {
4395
+ return this.client.request(`/v1/tiktok/users/${username}/videos`, {
4396
+ params: { region: options.region, count: options.count, cursor: options.cursor }
4397
+ });
4398
+ }
4399
+ /**
4400
+ * Get a TikTok user's followers (best-effort; often guest-gated).
4401
+ *
4402
+ * @deprecated Requires an authenticated session; currently returns 410.
4403
+ * Kept for forward-compatibility — the endpoint may be re-enabled when
4404
+ * session-based access is supported.
4405
+ *
4406
+ * @param username - The user's @handle.
4407
+ * @param options - Optional parameters (region, count, cursor).
4408
+ * @returns A cursor-paginated list of follower authors.
4409
+ */
4410
+ async followers(username, options = {}) {
4411
+ return this.client.request(`/v1/tiktok/users/${username}/followers`, {
4412
+ params: { region: options.region, count: options.count, cursor: options.cursor }
4413
+ });
4414
+ }
4415
+ /**
4416
+ * Get accounts a TikTok user follows (best-effort).
4417
+ *
4418
+ * @deprecated Requires an authenticated session; currently returns 410.
4419
+ * Kept for forward-compatibility — the endpoint may be re-enabled when
4420
+ * session-based access is supported.
4421
+ *
4422
+ * @param username - The user's @handle.
4423
+ * @param options - Optional parameters (region, count, cursor).
4424
+ * @returns A cursor-paginated list of followed authors.
4425
+ */
4426
+ async following(username, options = {}) {
4427
+ return this.client.request(`/v1/tiktok/users/${username}/following`, {
4428
+ params: { region: options.region, count: options.count, cursor: options.cursor }
4429
+ });
4430
+ }
4431
+ /**
4432
+ * Get a TikTok user's liked videos (only if their Liked tab is public).
4433
+ *
4434
+ * @deprecated Requires an authenticated session; currently returns 410.
4435
+ * Kept for forward-compatibility — the endpoint may be re-enabled when
4436
+ * session-based access is supported.
4437
+ *
4438
+ * @param username - The user's @handle.
4439
+ * @param options - Optional parameters (region, count).
4440
+ * @returns A cursor-paginated list of videos.
4441
+ */
4442
+ async liked(username, options = {}) {
4443
+ return this.client.request(`/v1/tiktok/users/${username}/liked`, {
4444
+ params: { region: options.region, count: options.count }
4445
+ });
4446
+ }
4447
+ /**
4448
+ * Get videos a TikTok user has reposted.
4449
+ *
4450
+ * @param username - The user's @handle.
4451
+ * @param options - Optional parameters (region, count).
4452
+ * @returns A cursor-paginated list of videos.
4453
+ */
4454
+ async reposts(username, options = {}) {
4455
+ return this.client.request(`/v1/tiktok/users/${username}/reposts`, {
4456
+ params: { region: options.region, count: options.count }
4457
+ });
4458
+ }
4459
+ };
4460
+
4461
+ // src/tiktok/videos.ts
4462
+ var VideosClient2 = class {
4463
+ client;
4464
+ constructor(client) {
4465
+ this.client = client;
4466
+ }
4467
+ /**
4468
+ * Get full metadata for a single TikTok video/post.
4469
+ *
4470
+ * @param videoId - The video/post id.
4471
+ * @param options - Optional parameters (region, username).
4472
+ * @returns The video detail response.
4473
+ * @throws NotFoundError - If the video doesn't exist.
4474
+ */
4475
+ async get(videoId, options = {}) {
4476
+ return this.client.request(`/v1/tiktok/videos/${videoId}`, {
4477
+ params: { region: options.region, username: options.username }
4478
+ });
4479
+ }
4480
+ /**
4481
+ * Get top-level comments on a TikTok video.
4482
+ *
4483
+ * @param videoId - The video/post id.
4484
+ * @param options - Optional parameters (region, count, cursor).
4485
+ * @returns A cursor-paginated list of comments.
4486
+ */
4487
+ async comments(videoId, options = {}) {
4488
+ return this.client.request(`/v1/tiktok/videos/${videoId}/comments`, {
4489
+ params: { region: options.region, count: options.count, cursor: options.cursor }
4490
+ });
4491
+ }
4492
+ /**
4493
+ * Get replies to a TikTok comment (best-effort).
4494
+ *
4495
+ * @param commentId - The comment id.
4496
+ * @param options - Parameters including the required `videoId` (region, count, cursor).
4497
+ * @returns A cursor-paginated list of reply comments.
4498
+ */
4499
+ async commentReplies(commentId, options) {
4500
+ return this.client.request(`/v1/tiktok/comments/${commentId}/replies`, {
4501
+ params: {
4502
+ video_id: options.videoId,
4503
+ region: options.region,
4504
+ count: options.count,
4505
+ cursor: options.cursor
4506
+ }
4507
+ });
4508
+ }
4509
+ /**
4510
+ * Get TikTok's related videos for a given video.
4511
+ *
4512
+ * @param videoId - The video/post id.
4513
+ * @param options - Optional parameters (region, count).
4514
+ * @returns A cursor-paginated list of related videos.
4515
+ */
4516
+ async related(videoId, options = {}) {
4517
+ return this.client.request(`/v1/tiktok/videos/${videoId}/related`, {
4518
+ params: { region: options.region, count: options.count }
4519
+ });
4520
+ }
4521
+ /**
4522
+ * Get subtitle/caption tracks for a TikTok video.
4523
+ *
4524
+ * @param videoId - The video/post id.
4525
+ * @param options - Optional parameters (region).
4526
+ * @returns The transcript response with subtitle tracks and voice-to-text.
4527
+ */
4528
+ async transcript(videoId, options = {}) {
4529
+ return this.client.request(`/v1/tiktok/videos/${videoId}/transcript`, {
4530
+ params: { region: options.region }
4531
+ });
4532
+ }
4533
+ /**
4534
+ * Get cheap unauthenticated oEmbed metadata for a TikTok URL.
4535
+ *
4536
+ * @param url - Full TikTok video or profile URL.
4537
+ * @param options - Optional parameters (region).
4538
+ * @returns The oEmbed metadata.
4539
+ */
4540
+ async oembed(url, options = {}) {
4541
+ return this.client.request("/v1/tiktok/oembed", {
4542
+ params: { url, region: options.region }
4543
+ });
4544
+ }
4545
+ };
4546
+
4547
+ // src/tiktok/search.ts
4548
+ var SearchClient6 = class {
4549
+ client;
4550
+ constructor(client) {
4551
+ this.client = client;
4552
+ }
4553
+ /**
4554
+ * General TikTok search — video results from the Top feed.
4555
+ *
4556
+ * @param params - Search parameters including query, region, count, cursor.
4557
+ * @returns A cursor-paginated list of videos.
4558
+ */
4559
+ async search(params) {
4560
+ return this.client.request("/v1/tiktok/search", {
4561
+ params: {
4562
+ query: params.query,
4563
+ region: params.region,
4564
+ count: params.count,
4565
+ cursor: params.cursor
4566
+ }
4567
+ });
4568
+ }
4569
+ /**
4570
+ * Search TikTok videos by keyword.
4571
+ *
4572
+ * @param params - Search parameters including query, region, count, cursor.
4573
+ * @returns A cursor-paginated list of videos.
4574
+ */
4575
+ async videos(params) {
4576
+ return this.client.request("/v1/tiktok/search/videos", {
4577
+ params: {
4578
+ query: params.query,
4579
+ region: params.region,
4580
+ count: params.count,
4581
+ cursor: params.cursor
4582
+ }
4583
+ });
4584
+ }
4585
+ /**
4586
+ * Search TikTok users by keyword.
4587
+ *
4588
+ * @param params - Search parameters including query, region, count, cursor.
4589
+ * @returns A cursor-paginated list of matching users.
4590
+ */
4591
+ async users(params) {
4592
+ return this.client.request("/v1/tiktok/search/users", {
4593
+ params: {
4594
+ query: params.query,
4595
+ region: params.region,
4596
+ count: params.count,
4597
+ cursor: params.cursor
4598
+ }
4599
+ });
4600
+ }
4601
+ /**
4602
+ * Search TikTok hashtags by keyword.
4603
+ *
4604
+ * @param params - Search parameters including query, region, count, cursor.
4605
+ * @returns A cursor-paginated list of matching hashtags.
4606
+ */
4607
+ async hashtags(params) {
4608
+ return this.client.request("/v1/tiktok/search/hashtags", {
4609
+ params: {
4610
+ query: params.query,
4611
+ region: params.region,
4612
+ count: params.count,
4613
+ cursor: params.cursor
4614
+ }
4615
+ });
4616
+ }
4617
+ };
4618
+
4619
+ // src/tiktok/music.ts
4620
+ var MusicClient = class {
4621
+ client;
4622
+ constructor(client) {
4623
+ this.client = client;
4624
+ }
4625
+ /**
4626
+ * Get TikTok sound/music detail.
4627
+ *
4628
+ * @param musicId - The sound/music id.
4629
+ * @param options - Optional parameters (region).
4630
+ * @returns The music detail response.
4631
+ * @throws NotFoundError - If the music doesn't exist.
4632
+ */
4633
+ async get(musicId, options = {}) {
4634
+ return this.client.request(`/v1/tiktok/music/${musicId}`, {
4635
+ params: { region: options.region }
4636
+ });
4637
+ }
4638
+ /**
4639
+ * Get videos using a given TikTok sound.
4640
+ *
4641
+ * @param musicId - The sound/music id.
4642
+ * @param options - Optional parameters (region, count, cursor).
4643
+ * @returns A cursor-paginated list of videos.
4644
+ */
4645
+ async videos(musicId, options = {}) {
4646
+ return this.client.request(`/v1/tiktok/music/${musicId}/videos`, {
4647
+ params: { region: options.region, count: options.count, cursor: options.cursor }
4648
+ });
4649
+ }
4650
+ };
4651
+
4652
+ // src/tiktok/hashtags.ts
4653
+ var HashtagsClient = class {
4654
+ client;
4655
+ constructor(client) {
4656
+ this.client = client;
4657
+ }
4658
+ /**
4659
+ * Get TikTok hashtag/challenge detail.
4660
+ *
4661
+ * @param name - The hashtag name (without the leading '#').
4662
+ * @param options - Optional parameters (region).
4663
+ * @returns The hashtag detail response.
4664
+ * @throws NotFoundError - If the hashtag doesn't exist.
4665
+ */
4666
+ async get(name, options = {}) {
4667
+ return this.client.request(`/v1/tiktok/hashtags/${name}`, {
4668
+ params: { region: options.region }
4669
+ });
4670
+ }
4671
+ /**
4672
+ * Get videos tagged with a TikTok hashtag.
4673
+ *
4674
+ * @param name - The hashtag name (without the leading '#').
4675
+ * @param options - Optional parameters (region, count, cursor).
4676
+ * @returns A cursor-paginated list of videos.
4677
+ */
4678
+ async videos(name, options = {}) {
4679
+ return this.client.request(`/v1/tiktok/hashtags/${name}/videos`, {
4680
+ params: { region: options.region, count: options.count, cursor: options.cursor }
4681
+ });
4682
+ }
4683
+ };
4684
+
4685
+ // src/tiktok/trending.ts
4686
+ var TrendingClient = class {
4687
+ client;
4688
+ constructor(client) {
4689
+ this.client = client;
4690
+ }
4691
+ /**
4692
+ * Get trending videos from the TikTok Explore feed.
4693
+ *
4694
+ * @param options - Optional parameters (region, count).
4695
+ * @returns A cursor-paginated list of trending videos.
4696
+ */
4697
+ async videos(options = {}) {
4698
+ return this.client.request("/v1/tiktok/trending/videos", {
4699
+ params: { region: options.region, count: options.count }
4700
+ });
4701
+ }
4702
+ /**
4703
+ * Get trending hashtags (mobile Discover surface — view_count + creators).
4704
+ *
4705
+ * @param options - Optional parameters (region, period, count).
4706
+ * @returns The trending hashtags response.
4707
+ */
4708
+ async hashtags(options = {}) {
4709
+ return this.client.request(
4710
+ "/v1/tiktok/trending/hashtags",
4711
+ { params: { region: options.region, period: options.period, count: options.count } }
4712
+ );
4713
+ }
4714
+ /**
4715
+ * Get trending songs/sounds (mobile hot-music feed — ranked by usage).
4716
+ *
4717
+ * @param options - Optional parameters (region, period, count).
4718
+ * @returns The trending songs response.
4719
+ */
4720
+ async songs(options = {}) {
4721
+ return this.client.request(
4722
+ "/v1/tiktok/trending/songs",
4723
+ { params: { region: options.region, period: options.period, count: options.count } }
4724
+ );
4725
+ }
4726
+ };
4727
+
4728
+ // src/tiktok/ads.ts
4729
+ var AdsClient = class {
4730
+ client;
4731
+ constructor(client) {
4732
+ this.client = client;
4733
+ }
4734
+ /**
4735
+ * Search TikTok's Commercial Content Library (ad transparency) by keyword or advertiser.
4736
+ *
4737
+ * @param params - Optional parameters (query, advertiser_id, region, days, sort, offset, search_id, count).
4738
+ * @returns The ad-library search response with ads and pagination.
4739
+ */
4740
+ async search(params = {}) {
4741
+ return this.client.request("/v1/tiktok/ads/search", {
4742
+ params: {
4743
+ query: params.query,
4744
+ advertiser_id: params.advertiser_id,
4745
+ region: params.region,
4746
+ days: params.days,
4747
+ sort: params.sort,
4748
+ offset: params.offset,
4749
+ search_id: params.search_id,
4750
+ count: params.count
4751
+ }
4752
+ });
4753
+ }
4754
+ };
4755
+
4756
+ // src/tiktok/reference.ts
4757
+ var ReferenceClient4 = class {
4758
+ client;
4759
+ constructor(client) {
4760
+ this.client = client;
4761
+ }
4762
+ /**
4763
+ * List supported TikTok content regions.
4764
+ *
4765
+ * @returns The regions response with all supported content regions.
4766
+ */
4767
+ async regions() {
4768
+ return this.client.request("/v1/tiktok/regions");
4769
+ }
4770
+ /**
4771
+ * Check the health of the TikTok scraper service.
4772
+ *
4773
+ * @returns The raw health payload from the scraper service.
4774
+ */
4775
+ async health() {
4776
+ return this.client.request("/v1/tiktok/health");
4777
+ }
4778
+ };
4779
+
4780
+ // src/tiktok/client.ts
4781
+ var TikTokClient = class {
4782
+ /** Client for profiles, videos, followers, following, liked, reposts */
4783
+ users;
4784
+ /** Client for video detail, comments, replies, related, transcript, oEmbed */
4785
+ videos;
4786
+ /** Client for keyword search across videos, users, and hashtags */
4787
+ search;
4788
+ /** Client for sound/music detail and videos using a sound */
4789
+ music;
4790
+ /** Client for hashtag detail and tagged videos */
4791
+ hashtags;
4792
+ /** Client for trending videos, hashtags, and songs */
4793
+ trending;
4794
+ /** Client for the Commercial Content Library (ad transparency) */
4795
+ ads;
4796
+ /** Client for reference data (regions) and service health */
4797
+ reference;
4798
+ /**
4799
+ * Create a new TikTok client.
4800
+ *
4801
+ * @param client - The base HTTP client for making requests.
4802
+ */
4803
+ constructor(client) {
4804
+ this.users = new UsersClient4(client);
4805
+ this.videos = new VideosClient2(client);
4806
+ this.search = new SearchClient6(client);
4807
+ this.music = new MusicClient(client);
4808
+ this.hashtags = new HashtagsClient(client);
4809
+ this.trending = new TrendingClient(client);
4810
+ this.ads = new AdsClient(client);
4811
+ this.reference = new ReferenceClient4(client);
4812
+ }
4813
+ };
4814
+
4192
4815
  // src/client.ts
4193
4816
  var ScrapeBadger = class {
4194
4817
  baseClient;
@@ -4204,6 +4827,10 @@ var ScrapeBadger = class {
4204
4827
  reddit;
4205
4828
  /** Amazon scraper API client — 14 endpoints */
4206
4829
  amazon;
4830
+ /** Shopee scraper API client — 6 endpoints across 11 markets */
4831
+ shopee;
4832
+ /** TikTok scraper API client — 26 endpoints */
4833
+ tiktok;
4207
4834
  /**
4208
4835
  * Create a new ScrapeBadger client.
4209
4836
  *
@@ -4244,6 +4871,8 @@ var ScrapeBadger = class {
4244
4871
  this.google = new GoogleClient(this.baseClient);
4245
4872
  this.reddit = new RedditClient(this.baseClient);
4246
4873
  this.amazon = new AmazonClient(this.baseClient);
4874
+ this.shopee = new ShopeeClient(this.baseClient);
4875
+ this.tiktok = new TikTokClient(this.baseClient);
4247
4876
  }
4248
4877
  };
4249
4878
 
@@ -4289,8 +4918,22 @@ exports.RedditUsersClient = UsersClient3;
4289
4918
  exports.ScrapeBadger = ScrapeBadger;
4290
4919
  exports.ScrapeBadgerError = ScrapeBadgerError;
4291
4920
  exports.ServerError = ServerError;
4921
+ exports.ShopeeClient = ShopeeClient;
4922
+ exports.ShopeeProductsClient = ProductsClient3;
4923
+ exports.ShopeeReferenceClient = ReferenceClient3;
4924
+ exports.ShopeeReviewsClient = ReviewsClient;
4925
+ exports.ShopeeSearchClient = SearchClient5;
4292
4926
  exports.SpacesClient = SpacesClient;
4293
4927
  exports.StreamClient = StreamClient;
4928
+ exports.TikTokAdsClient = AdsClient;
4929
+ exports.TikTokClient = TikTokClient;
4930
+ exports.TikTokHashtagsClient = HashtagsClient;
4931
+ exports.TikTokMusicClient = MusicClient;
4932
+ exports.TikTokReferenceClient = ReferenceClient4;
4933
+ exports.TikTokSearchClient = SearchClient6;
4934
+ exports.TikTokTrendingClient = TrendingClient;
4935
+ exports.TikTokUsersClient = UsersClient4;
4936
+ exports.TikTokVideosClient = VideosClient2;
4294
4937
  exports.TimeoutError = TimeoutError;
4295
4938
  exports.TrendsClient = TrendsClient;
4296
4939
  exports.TweetsClient = TweetsClient;