mcpscraper-sdk 0.19.0 → 0.21.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.d.cts CHANGED
@@ -479,6 +479,32 @@ interface paths {
479
479
  patch?: never;
480
480
  trace?: never;
481
481
  };
482
+ "/reddit/trending": {
483
+ parameters: {
484
+ query?: never;
485
+ header?: never;
486
+ path?: never;
487
+ cookie?: never;
488
+ };
489
+ get?: never;
490
+ put?: never;
491
+ /**
492
+ * Discover and rank the top recent Reddit threads for a topic
493
+ * @description Finds relevant recent Reddit threads via a Google site:reddit.com search over a week/month window,
494
+ * then (by default) scrapes them all in parallel for real upvotes, comments, and the questions people
495
+ * asked, and ranks by engagement (upvotes + 2x comments). Billing: one discovery debit plus, when
496
+ * includeComments is true, 30 credits per scraped thread and 2 credits per captured comment, each
497
+ * refunded on failure. Set includeComments:false for a cheap discovery-only sweep (thread list, no
498
+ * engagement stats, no per-thread billing). Scraping respects a soft deadline and returns partial:true
499
+ * if it stops early rather than exceeding the request limit.
500
+ */
501
+ post: operations["redditTrending"];
502
+ delete?: never;
503
+ options?: never;
504
+ head?: never;
505
+ patch?: never;
506
+ trace?: never;
507
+ };
482
508
  "/video/analyze": {
483
509
  parameters: {
484
510
  query?: never;
@@ -895,6 +921,11 @@ interface components {
895
921
  * @default false
896
922
  */
897
923
  serpOnly: boolean;
924
+ /**
925
+ * @description Optional Google time filter (past day/week/month/year). Omit for all-time. Pairs well with a site: operator in the query.
926
+ * @enum {string}
927
+ */
928
+ recency?: "day" | "week" | "month" | "year";
898
929
  /** @default false */
899
930
  debug: boolean;
900
931
  };
@@ -2443,6 +2474,97 @@ interface operations {
2443
2474
  };
2444
2475
  };
2445
2476
  };
2477
+ redditTrending: {
2478
+ parameters: {
2479
+ query?: never;
2480
+ header?: never;
2481
+ path?: never;
2482
+ cookie?: never;
2483
+ };
2484
+ requestBody: {
2485
+ content: {
2486
+ "application/json": {
2487
+ /** @description Topic in plain words, e.g. "crm for small business". Not a URL. */
2488
+ topic: string;
2489
+ /** @description Bare subreddit name to scope the scan, e.g. "SEO" (no r/ prefix). Omit to scan all of Reddit. */
2490
+ subreddit?: string;
2491
+ /**
2492
+ * @description How recent the threads must be.
2493
+ * @default month
2494
+ * @enum {string}
2495
+ */
2496
+ window?: "week" | "month";
2497
+ /**
2498
+ * @description How many discovered threads to scrape and rank (scrape-all default). Lower to cap cost.
2499
+ * @default 20
2500
+ */
2501
+ maxThreads?: number;
2502
+ /**
2503
+ * @description true = scrape each thread for engagement + questions and rank; false = cheap discovery-only list.
2504
+ * @default true
2505
+ */
2506
+ includeComments?: boolean;
2507
+ /**
2508
+ * @description Comments captured (and billed) per scraped thread when includeComments is true.
2509
+ * @default 50
2510
+ */
2511
+ maxCommentsPerThread?: number;
2512
+ };
2513
+ };
2514
+ };
2515
+ responses: {
2516
+ /** @description Ranked trending threads. */
2517
+ 200: {
2518
+ headers: {
2519
+ [name: string]: unknown;
2520
+ };
2521
+ content: {
2522
+ "application/json": {
2523
+ topic?: string;
2524
+ subreddit?: string | null;
2525
+ /** @description Resolved window, e.g. "7d" or "30d". */
2526
+ window?: string;
2527
+ totals?: {
2528
+ threads?: number;
2529
+ upvotes?: number;
2530
+ comments?: number;
2531
+ };
2532
+ rankedThreads?: {
2533
+ title?: string;
2534
+ url?: string;
2535
+ subreddit?: string;
2536
+ score?: number;
2537
+ commentCount?: number;
2538
+ engagementScore?: number;
2539
+ ageText?: string;
2540
+ topQuestions?: string[];
2541
+ }[];
2542
+ questions?: {
2543
+ question?: string;
2544
+ threadUrl?: string;
2545
+ }[];
2546
+ threadsScraped?: number;
2547
+ candidatesFound?: number;
2548
+ /** @description true if scraping stopped early at the time limit. */
2549
+ partial?: boolean;
2550
+ /** @description The Google site:reddit.com query used for discovery. */
2551
+ searchQuery?: string;
2552
+ };
2553
+ };
2554
+ };
2555
+ 400: components["responses"]["BadRequest"];
2556
+ 402: components["responses"]["InsufficientBalance"];
2557
+ /** @description No Reddit threads found for that topic and window — billed amount was refunded. */
2558
+ 404: {
2559
+ headers: {
2560
+ [name: string]: unknown;
2561
+ };
2562
+ content?: never;
2563
+ };
2564
+ 429: components["responses"]["ConcurrencyLimitExceeded"];
2565
+ 500: components["responses"]["ServerError"];
2566
+ };
2567
+ };
2446
2568
  videoAnalyze: {
2447
2569
  parameters: {
2448
2570
  query?: never;
package/dist/index.d.ts CHANGED
@@ -479,6 +479,32 @@ interface paths {
479
479
  patch?: never;
480
480
  trace?: never;
481
481
  };
482
+ "/reddit/trending": {
483
+ parameters: {
484
+ query?: never;
485
+ header?: never;
486
+ path?: never;
487
+ cookie?: never;
488
+ };
489
+ get?: never;
490
+ put?: never;
491
+ /**
492
+ * Discover and rank the top recent Reddit threads for a topic
493
+ * @description Finds relevant recent Reddit threads via a Google site:reddit.com search over a week/month window,
494
+ * then (by default) scrapes them all in parallel for real upvotes, comments, and the questions people
495
+ * asked, and ranks by engagement (upvotes + 2x comments). Billing: one discovery debit plus, when
496
+ * includeComments is true, 30 credits per scraped thread and 2 credits per captured comment, each
497
+ * refunded on failure. Set includeComments:false for a cheap discovery-only sweep (thread list, no
498
+ * engagement stats, no per-thread billing). Scraping respects a soft deadline and returns partial:true
499
+ * if it stops early rather than exceeding the request limit.
500
+ */
501
+ post: operations["redditTrending"];
502
+ delete?: never;
503
+ options?: never;
504
+ head?: never;
505
+ patch?: never;
506
+ trace?: never;
507
+ };
482
508
  "/video/analyze": {
483
509
  parameters: {
484
510
  query?: never;
@@ -895,6 +921,11 @@ interface components {
895
921
  * @default false
896
922
  */
897
923
  serpOnly: boolean;
924
+ /**
925
+ * @description Optional Google time filter (past day/week/month/year). Omit for all-time. Pairs well with a site: operator in the query.
926
+ * @enum {string}
927
+ */
928
+ recency?: "day" | "week" | "month" | "year";
898
929
  /** @default false */
899
930
  debug: boolean;
900
931
  };
@@ -2443,6 +2474,97 @@ interface operations {
2443
2474
  };
2444
2475
  };
2445
2476
  };
2477
+ redditTrending: {
2478
+ parameters: {
2479
+ query?: never;
2480
+ header?: never;
2481
+ path?: never;
2482
+ cookie?: never;
2483
+ };
2484
+ requestBody: {
2485
+ content: {
2486
+ "application/json": {
2487
+ /** @description Topic in plain words, e.g. "crm for small business". Not a URL. */
2488
+ topic: string;
2489
+ /** @description Bare subreddit name to scope the scan, e.g. "SEO" (no r/ prefix). Omit to scan all of Reddit. */
2490
+ subreddit?: string;
2491
+ /**
2492
+ * @description How recent the threads must be.
2493
+ * @default month
2494
+ * @enum {string}
2495
+ */
2496
+ window?: "week" | "month";
2497
+ /**
2498
+ * @description How many discovered threads to scrape and rank (scrape-all default). Lower to cap cost.
2499
+ * @default 20
2500
+ */
2501
+ maxThreads?: number;
2502
+ /**
2503
+ * @description true = scrape each thread for engagement + questions and rank; false = cheap discovery-only list.
2504
+ * @default true
2505
+ */
2506
+ includeComments?: boolean;
2507
+ /**
2508
+ * @description Comments captured (and billed) per scraped thread when includeComments is true.
2509
+ * @default 50
2510
+ */
2511
+ maxCommentsPerThread?: number;
2512
+ };
2513
+ };
2514
+ };
2515
+ responses: {
2516
+ /** @description Ranked trending threads. */
2517
+ 200: {
2518
+ headers: {
2519
+ [name: string]: unknown;
2520
+ };
2521
+ content: {
2522
+ "application/json": {
2523
+ topic?: string;
2524
+ subreddit?: string | null;
2525
+ /** @description Resolved window, e.g. "7d" or "30d". */
2526
+ window?: string;
2527
+ totals?: {
2528
+ threads?: number;
2529
+ upvotes?: number;
2530
+ comments?: number;
2531
+ };
2532
+ rankedThreads?: {
2533
+ title?: string;
2534
+ url?: string;
2535
+ subreddit?: string;
2536
+ score?: number;
2537
+ commentCount?: number;
2538
+ engagementScore?: number;
2539
+ ageText?: string;
2540
+ topQuestions?: string[];
2541
+ }[];
2542
+ questions?: {
2543
+ question?: string;
2544
+ threadUrl?: string;
2545
+ }[];
2546
+ threadsScraped?: number;
2547
+ candidatesFound?: number;
2548
+ /** @description true if scraping stopped early at the time limit. */
2549
+ partial?: boolean;
2550
+ /** @description The Google site:reddit.com query used for discovery. */
2551
+ searchQuery?: string;
2552
+ };
2553
+ };
2554
+ };
2555
+ 400: components["responses"]["BadRequest"];
2556
+ 402: components["responses"]["InsufficientBalance"];
2557
+ /** @description No Reddit threads found for that topic and window — billed amount was refunded. */
2558
+ 404: {
2559
+ headers: {
2560
+ [name: string]: unknown;
2561
+ };
2562
+ content?: never;
2563
+ };
2564
+ 429: components["responses"]["ConcurrencyLimitExceeded"];
2565
+ 500: components["responses"]["ServerError"];
2566
+ };
2567
+ };
2446
2568
  videoAnalyze: {
2447
2569
  parameters: {
2448
2570
  query?: never;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcpscraper-sdk",
3
- "version": "0.19.0",
3
+ "version": "0.21.0",
4
4
  "description": "Official Node.js client for all 165 mcpscraper.dev MCP tools and the REST API",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -23,7 +23,7 @@
23
23
  "generate": "openapi-typescript ../../contracts/scraper.openapi.yaml -o src/schema.ts",
24
24
  "build": "tsup src/index.ts --format esm,cjs --dts",
25
25
  "typecheck": "tsc --noEmit",
26
- "test": "tsx --test test/*.test.ts"
26
+ "test": "node --import tsx --test test/*.test.ts"
27
27
  },
28
28
  "keywords": [
29
29
  "mcp-scraper",
@@ -32,7 +32,7 @@
32
32
  "seo-api"
33
33
  ],
34
34
  "dependencies": {
35
- "mcpscraper-memory-sdk": "^0.19.0"
35
+ "mcpscraper-memory-sdk": "^0.21.0"
36
36
  },
37
37
  "devDependencies": {
38
38
  "openapi-typescript": "^7.13.0"