io.github.Perufitlife/multi-scraper-mcp
NPM · MULTI-SCRAPER-MCP · SCANNED AUG 3
14 web scrapers as MCP tools: Reddit, Amazon, Google Maps, Yelp, YouTube, Indeed & more.
Available components
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. How we score →
Supply Chain Security86
- No malware found by supply-chain analysis.Pass
- Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.Partial
- No install/post-install scripts declared.Pass
- Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 46 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability62
- AI-judged instruction clarity (good).Pass
- 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. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage98
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 94% of tool parameters carry a description.Partial
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · multi-scraper-mcp
claude mcp add perufitlife-multi-scraper-mcp -- npx -y multi-scraper-mcp
codex mcp add perufitlife-multi-scraper-mcp -- npx -y multi-scraper-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"perufitlife-multi-scraper-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"multi-scraper-mcp"
],
"enabled": true
}
}
} openclaw mcp add perufitlife-multi-scraper-mcp --command npx --arg -y --arg multi-scraper-mcp
mcp_servers:
perufitlife-multi-scraper-mcp:
command: "npx"
args: ["-y", "multi-scraper-mcp"] {
"mcpServers": {
"perufitlife-multi-scraper-mcp": {
"command": "npx",
"args": [
"-y",
"multi-scraper-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Aug 26 +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.
- 2 Aug 26 +52
- Provenance: fail → unverified ▼ security
- Install scripts: pass → unverified ▼ security
- Known CVEs: unverified → partial ▲ security
- Malware scan: unverified → pass ▲ security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Maintenance: pass → unverified ▼ functional
- License: pass → unverified ▼ functional
- Stability: unverified → 0.23 ▲ functional
- Dependency health: unverified → partial ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- Licence: MIT functional
- 1 Aug 26 −37
- 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. security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Dependency health: partial → unverified ▼ functional
- 31 Jul 26 +4
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 −30
- Known CVEs: partial → unverified ▼ security
- Malware scan: pass → unverified ▼ security
- Dependency health: partial → unverified ▼ functional
- 29 Jul 26 +50
- Provenance: unverified → fail ▼ security
- Known CVEs: unverified → partial ▲ security
- Install scripts: unverified → pass ▲ security
- Maintenance: unverified → pass ▲ functional
- License: unverified → pass ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- Schema quality: unverified → good ▲ functional
- Licence: MIT functional
- 28 Jul 26 −17
- Tool coverage: 100 → unverified ▼ functional
- Dependency health: unverified → partial ▲ functional
- First check of Schema quality: unverified functional
- 27 Jul 26 43
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Analysed npm/[email protected]
Provenance none
Ecosystem: npm · Outcome: none
Dependencies 94 packages
94 packages in the resolved dependency tree · 94 deprecated · 29 stale.
The dependency tree was only partially resolved, so these counts may be incomplete.
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
amazon_search ~197
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}
| Name | Type | Req | Description |
|---|---|---|---|
| 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"] |
No output schema declared.
No examples provided.
ebay_search ~170
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}
| Name | Type | Req | Description |
|---|---|---|---|
| marketplace | string | — | eBay domain: ebay.com, ebay.co.uk, ebay.de, etc. |
| maxResultsPerQuery | integer | — | Max listings per query (1-100) |
| searchQueries | array | yes | eBay search keywords (required), e.g. ["iphone 14 pro unlocked"] |
| soldOnly | boolean | — | Only completed/sold listings — use for historical pricing research |
No output schema declared.
No examples provided.
google_maps_leads ~288
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}
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | yes | Google Maps searches in "niche in city, state" form (required), e.g. ["plumbers in Austin, TX", "law firms in Chicago, IL"] |
No output schema declared.
No examples provided.
google_maps_reviews ~133
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"}
| Name | Type | Req | Description |
|---|---|---|---|
| language | string | — | — |
| maxReviewsPerPlace | integer | — | Max reviews per place (1-500) |
| placeUrls | array | yes | Google Maps place URLs (required) |
| sortBy | string | — | — |
No output schema declared.
No examples provided.
google_maps_search ~140
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}
| Name | Type | Req | Description |
|---|---|---|---|
| language | string | — | Results language code, e.g. en, es, de |
| maxResultsPerQuery | integer | — | Max businesses per query (1-200) |
| searchQueries | array | yes | Queries in "category in location" form (required), e.g. ["coffee shops near Times Square NYC"] |
No output schema declared.
No examples provided.
healthcare_provider_leads ~408
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}
| Name | Type | Req | Description |
|---|---|---|---|
| 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" |
No output schema declared.
No examples provided.
indeed_jobs ~217
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"}
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | yes | Job titles or keywords (required), e.g. ["data engineer", "RN nurse"] |
No output schema declared.
No examples provided.
reddit_scrape ~292
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"}
| Name | Type | Req | Description |
|---|---|---|---|
| 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" |
No output schema declared.
No examples provided.
saas_pricing ~137
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}
| Name | Type | Req | Description |
|---|---|---|---|
| compareWithPrevious | boolean | — | Diff against previous run of the same URL to detect changes |
| extractFeatures | boolean | — | Extract per-tier feature lists |
| urls | array | yes | Direct pricing page URLs (required), e.g. ["https://www.notion.so/pricing"] |
No output schema declared.
No examples provided.
tiktok_profile ~149
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}
| Name | Type | Req | Description |
|---|---|---|---|
| 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 |
No output schema declared.
No examples provided.
trustpilot_reviews ~158
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"}
| Name | Type | Req | Description |
|---|---|---|---|
| companyUrls | array | yes | 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 | — | — |
No output schema declared.
No examples provided.
website_contacts ~154
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}
| Name | Type | Req | Description |
|---|---|---|---|
| detectTechStack | boolean | — | Also detect CMS/analytics/framework technologies |
| domains | array | yes | 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) |
No output schema declared.
No examples provided.
yelp_search ~211
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}
| Name | Type | Req | Description |
|---|---|---|---|
| includeReviews | boolean | — | Include up to 3 review excerpts per business |
| maxResultsPerSearch | integer | — | Max businesses per search (1-50) |
| searches | array | yes | 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. |
No output schema declared.
No examples provided.
youtube_channel ~138
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}
| Name | Type | Req | Description |
|---|---|---|---|
| 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 |
No output schema declared.
No examples provided.