# io.github.Perufitlife/multi-scraper-mcp (npm · multi-scraper-mcp)

14 web scrapers as MCP tools: Reddit, Amazon, Google Maps, Yelp, YouTube, Indeed & more.

- Trust score: 66/100 (medium)
- Change this week: +23
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `multi-scraper-mcp`: 66/100 (this document), [markdown](https://verifymcp.io/servers/perufitlife-multi-scraper-mcp/multi-scraper-mcp.md), [page](https://verifymcp.io/servers/perufitlife-multi-scraper-mcp/multi-scraper-mcp)

## Channel facts

- Registry: `npm`
- Package: `multi-scraper-mcp`
- Version: `1.0.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 86/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 46 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 62/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2792 tokens (~199/item across 14 items; 14 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 98/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 94% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add perufitlife-multi-scraper-mcp -- npx -y multi-scraper-mcp
```

### Codex

```bash
codex mcp add perufitlife-multi-scraper-mcp -- npx -y multi-scraper-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "perufitlife-multi-scraper-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "multi-scraper-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add perufitlife-multi-scraper-mcp --command npx --arg -y --arg multi-scraper-mcp
```

### Hermes

```yaml
mcp_servers:
  perufitlife-multi-scraper-mcp:
    command: "npx"
    args: ["-y", "multi-scraper-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "perufitlife-multi-scraper-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "multi-scraper-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-02 (score 65, +52)

- [security regression] Provenance: fail → unverified
- [security regression] Install scripts: pass → unverified
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional regression] Maintenance: pass → unverified
- [functional regression] License: pass → unverified
- [functional improvement] Stability: unverified → 0.23
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Tool coverage: unverified → 100
- [functional] Licence: MIT

### 2026-08-01 (score 13, −37)

- [security regression] Known CVEs: partial → unverified
- [security] Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Dependency health: partial → unverified

### 2026-07-31 (score 50, +4)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 46, −30)

- [security regression] Known CVEs: partial → unverified
- [security regression] Malware scan: pass → unverified
- [functional regression] Dependency health: partial → unverified

### 2026-07-29 (score 76, +50)

- [security regression] Provenance: unverified → fail
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] License: unverified → pass
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Schema quality: unverified → good
- [functional] Licence: MIT

### 2026-07-28 (score 26, −17)

- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] Dependency health: unverified → partial
- [functional] First check of Schema quality: unverified

### 2026-07-27 (score 43)

First indexed and scored.

## MCP tools (14)

### `reddit_scrape` (~292 tokens)

Get Reddit posts from subreddits, keyword searches across all of Reddit, or comments from specific post URLs. Returns title, score, author, body text, comment count and (optionally) nested comments — ideal for sentiment analysis, market research, and finding what people complain about. Note: when Reddit rate-limits, the scraper transparently degrades to Reddit RSS feeds, so very new comments may be partial. Example input: {"subreddits": ["smallbusiness"], "maxPostsPerSubreddit": 25, "sortBy": "top", "timeFilter": "week"}

Input parameters:

- `includeComments` (boolean): Also fetch comments for each post (slower, more thorough)
- `maxCommentsPerPost` (integer): Max comments per post when includeComments is true
- `maxPostsPerSubreddit` (integer): Max posts per subreddit/query (1-500). Keep low (10-25) for quick answers.
- `postUrls` (array): Direct Reddit post URLs to scrape comments from
- `searchQueries` (array): Keywords to search across all of Reddit, e.g. ["best CRM for small business"]
- `sortBy` (string)
- `subreddits` (array): Subreddit names without the r/ prefix, e.g. ["technology", "SaaS"]
- `timeFilter` (string): Time window when sortBy is "top"

### `amazon_search` (~197 tokens)

Search Amazon for products or look up specific ASINs/product URLs. Returns title, price, rating, review count, ASIN, image URL and Prime status. Use for price comparison, product research, and competitor monitoring. Supports US/UK/DE/FR/IT/ES/CA/AU/JP/IN marketplaces. Example input: {"searchQueries": ["wireless earbuds"], "marketplace": "amazon.com", "maxResultsPerQuery": 20}

Input parameters:

- `marketplace` (string): Marketplace domain: amazon.com, amazon.co.uk, amazon.de, etc.
- `maxResultsPerQuery` (integer): Max products per query (1-100)
- `productUrls` (array): Direct product URLs or bare ASINs, e.g. ["B0C1J9KX2P"]
- `searchQueries` (array): Product search queries, e.g. ["standing desk", "ergonomic chair"]

### `ebay_search` (~170 tokens)

Search eBay listings, including completed/sold listings for real market-price history. Returns title, price, condition, seller, sold count and auction status. Use soldOnly:true to research what items actually sell for (resale/arbitrage analysis). Example input: {"searchQueries": ["vintage seiko watch"], "soldOnly": true, "maxResultsPerQuery": 30}

Input parameters:

- `marketplace` (string): eBay domain: ebay.com, ebay.co.uk, ebay.de, etc.
- `maxResultsPerQuery` (integer): Max listings per query (1-100)
- `searchQueries` (array, required): eBay search keywords (required), e.g. ["iphone 14 pro unlocked"]
- `soldOnly` (boolean): Only completed/sold listings — use for historical pricing research

### `google_maps_search` (~140 tokens)

Find local businesses on Google Maps by category + location. Returns name, address, phone, website, rating, review count and GPS coordinates. The go-to tool for building local lead lists or analyzing local competition. Example input: {"searchQueries": ["dentists in Miami FL"], "maxResultsPerQuery": 25}

Input parameters:

- `language` (string): Results language code, e.g. en, es, de
- `maxResultsPerQuery` (integer): Max businesses per query (1-200)
- `searchQueries` (array, required): Queries in "category in location" form (required), e.g. ["coffee shops near Times Square NYC"]

### `google_maps_reviews` (~133 tokens)

Extract customer reviews for specific Google Maps places. Returns reviewer name, star rating, full review text, date and owner responses. Use after google_maps_search to dig into reputation/voice-of-customer for a business. Example input: {"placeUrls": ["https://www.google.com/maps/place/..."], "maxReviewsPerPlace": 30, "sortBy": "newest"}

Input parameters:

- `language` (string)
- `maxReviewsPerPlace` (integer): Max reviews per place (1-500)
- `placeUrls` (array, required): Google Maps place URLs (required)
- `sortBy` (string)

### `yelp_search` (~211 tokens)

Search Yelp businesses by category + location through the official Yelp Fusion API (reliable, no scraping blocks). Returns rating, address, phone, categories, price level, GPS and supported transactions. Requires a free Yelp Fusion API key (5000 calls/day at https://docs.developer.yelp.com/) passed as yelpApiKey. Example input: {"searches": ["ramen in San Francisco, CA"], "yelpApiKey": "YOUR_KEY", "maxResultsPerSearch": 20}

Input parameters:

- `includeReviews` (boolean): Include up to 3 review excerpts per business
- `maxResultsPerSearch` (integer): Max businesses per search (1-50)
- `searches` (array, required): Queries formatted as "category in city, state" (required), e.g. ["plumbers in Austin, TX"]
- `yelpApiKey` (string): Your Yelp Fusion API key (free at https://docs.developer.yelp.com/). Required unless the server operator configured one.

### `youtube_channel` (~138 tokens)

Get YouTube channel stats and recent videos, or metadata for specific video URLs. Returns subscribers, total views, and per-video title, view count, likes and publish date. Use for influencer vetting and content research. Example input: {"channelUrls": ["https://www.youtube.com/@mkbhd"], "maxVideosPerChannel": 15}

Input parameters:

- `channelUrls` (array): Channel URLs in any form: @handle, /channel/UC..., /user/...
- `maxVideosPerChannel` (integer): Max recent videos per channel (1-100)
- `videoUrls` (array): Direct video URLs to fetch metadata for

### `tiktok_profile` (~149 tokens)

Scrape TikTok creator profiles, their videos, or discover trending videos by hashtag. Returns followers, total likes, and per-video views, likes, comments, shares, hashtags and music. Use for influencer discovery and trend analysis. Example input: {"profileUrls": ["@khaby.lame"], "maxPostsPerProfile": 10}

Input parameters:

- `hashtags` (array): Hashtags (without #) to discover trending videos
- `maxPostsPerProfile` (integer): Max videos per profile (1-100)
- `maxResultsPerHashtag` (integer): Max videos per hashtag (1-100)
- `profileUrls` (array): TikTok profile URLs or bare @usernames

### `indeed_jobs` (~217 tokens)

Search Indeed job listings. Returns job title, company, location, salary (when posted), description snippet and posting date. Use for salary benchmarking, hiring-market analysis, or lead gen (companies hiring for X likely need Y). Supports US/UK/CA/AU/DE/FR/IN. Example input: {"searchQueries": ["react developer"], "location": "Austin, TX", "country": "us", "datePosted": "7"}

Input parameters:

- `country` (string): Country code: us, uk, ca, au, de, fr, in
- `datePosted` (string): Only jobs posted in the last N days
- `jobType` (string): Filter by employment type
- `location` (string): City/state or zip, e.g. "Miami, FL". Empty = nationwide.
- `maxResultsPerQuery` (integer): Max jobs per query (1-200)
- `searchQueries` (array, required): Job titles or keywords (required), e.g. ["data engineer", "RN nurse"]

### `trustpilot_reviews` (~158 tokens)

Scrape Trustpilot reviews for any company. Returns star rating, review title, full text, reviewer name, date, verified status and company responses. Use for competitor reputation analysis and mining customer pain points. Example input: {"companyUrls": ["stripe.com"], "maxReviewsPerCompany": 40, "sortBy": "recency"}

Input parameters:

- `companyUrls` (array, required): Trustpilot company page URLs or bare domains (required), e.g. ["notion.so"]
- `filterByRating` (integer): Only reviews with this star rating (1-5), e.g. 1 to mine complaints
- `maxReviewsPerCompany` (integer): Max reviews per company (1-500)
- `sortBy` (string)

### `website_contacts` (~154 tokens)

Crawl any website and extract emails, phone numbers, social media links and the detected technology stack. The B2B lead-enrichment workhorse: feed it domains from google_maps_search to get contactable leads. Example input: {"domains": ["acme-plumbing.com"], "maxPagesPerDomain": 4}

Input parameters:

- `detectTechStack` (boolean): Also detect CMS/analytics/framework technologies
- `domains` (array, required): Domains or URLs to crawl (required), e.g. ["example.com"]
- `includeGenericEmails` (boolean): Include info@/contact@/sales@ style emails
- `maxPagesPerDomain` (integer): Pages to crawl per domain — contact/about pages are prioritized (1-20)

### `saas_pricing` (~137 tokens)

Extract structured pricing from any SaaS pricing page: tier names, monthly/annual prices, billing periods and feature lists. With compareWithPrevious it diffs against the last run to detect pricing changes — ideal for competitor price monitoring. Example input: {"urls": ["https://slack.com/pricing"], "compareWithPrevious": false}

Input parameters:

- `compareWithPrevious` (boolean): Diff against previous run of the same URL to detect changes
- `extractFeatures` (boolean): Extract per-tier feature lists
- `urls` (array, required): Direct pricing page URLs (required), e.g. ["https://www.notion.so/pricing"]

### `google_maps_leads` (~288 tokens)

Build ready-to-contact local B2B lead lists in one step: scrape Google Maps businesses by category + city AND enrich each with emails (crawled from the business website), phone, social links and tech stack. Unlike google_maps_search, this returns leads you can actually email — no separate enrichment pass needed. Use for cold outreach, agency prospecting, and local sales lists. Example input: {"searchQueries": ["dentists in Miami, FL"], "maxResults": 50, "onlyWithWebsite": true}

Input parameters:

- `includeGenericEmails` (boolean): Include info@/hello@/contact@ style emails (disable for personal/role emails only)
- `language` (string): Google Maps results language code, e.g. en, es, fr
- `maxPagesPerSite` (integer): Pages crawled per business site to find emails — homepage/contact/about (1-8)
- `maxResults` (integer): Max businesses per query (1-500). Keep low (25-50) for quick lists.
- `onlyWithWebsite` (boolean): Drop businesses without a website (they cannot be email-enriched). Set true for outreach lists.
- `searchQueries` (array, required): Google Maps searches in "niche in city, state" form (required), e.g. ["plumbers in Austin, TX", "law firms in Chicago, IL"]

### `healthcare_provider_leads` (~408 tokens)

Get verified US healthcare provider leads from the official NPPES / NPI Registry (CMS public data), enriched with website emails, extra phones, social profiles and tech stack. Returns NPI, provider name, credential (MD/DO/DDS...), specialty, license, full address, phone, fax and email. The authoritative source for doctor/dentist/clinic prospecting — every record is government-verified, no guesswork. Use specialty in plain words (auto-mapped to NPPES taxonomy). Example input: {"specialty": "dermatologist", "city": "Los Angeles", "state": "CA", "maxResults": 100}

Input parameters:

- `city` (string): City to search in, e.g. "Miami". Combine with state for best targeting.
- `enrichEmails` (boolean): Find each provider website and extract emails/phones/socials. Disable for NPPES data only (faster, cheaper).
- `firstName` (string): Optional: find a specific provider by first name
- `includeGenericEmails` (boolean): Include info@/hello@/contact@ style emails
- `lastName` (string): Optional: find a specific provider by last name
- `maxPagesPerSite` (integer): Pages crawled per provider site to find emails (1-8)
- `maxResults` (integer): Max providers to return (1-1000)
- `onlyWithEmail` (boolean): Drop providers where no email was found. Set true for fully-enriched outreach lists.
- `postalCode` (string): Optional: narrow to a single ZIP code instead of / alongside city+state
- `specialty` (string): Provider type in plain words, e.g. "dentist", "dermatologist", "pediatrician", "cardiologist", "physical therapist"
- `state` (string): US state 2-letter abbreviation, e.g. "FL", "CA", "TX", "NY"

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/perufitlife-multi-scraper-mcp/multi-scraper-mcp#diagnostics

## Score history

- 2026-08-03: 66
- 2026-08-02: 65
- 2026-08-01: 13
- 2026-07-31: 50
- 2026-07-30: 46
- 2026-07-29: 76
- 2026-07-28: 26
- 2026-07-27: 43

## Links

- npm package: https://www.npmjs.com/package/multi-scraper-mcp
- Socket report: https://socket.dev/npm/package/multi-scraper-mcp
- Repository: https://github.com/Perufitlife/multi-scraper-mcp
- Changelog RSS feed: https://verifymcp.io/servers/perufitlife-multi-scraper-mcp/multi-scraper-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/perufitlife-multi-scraper-mcp/multi-scraper-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/perufitlife-multi-scraper-mcp/multi-scraper-mcp
