mcpField
S
scraperapi-lead-enrichment

scraperapi-lead-enrichment

github.com/scraperapiMarketing & growth10101 installsUpdated 12w ago
Repository

About scraperapi-lead-enrichment

A lead-enrichment skill for Claude that searches the web and fetches relevant pages from seed details about a person or company. It synthesizes findings into a structured contact card and reports remaining information gaps.

Key features

  1. 01Analyze person or company seed data
  2. 02Search the web for relevant sources
  3. 03Fetch selected pages for details
  4. 04Synthesize findings into a contact card
  5. 05Report missing high-priority fields

Use cases

  1. 01Enrich a contact from a name and company
  2. 02Find company details from a domain
  3. 03Research a person from a profile URL
  4. 04Identify missing contact-card information

MCP support

The skill directs Claude to make searches and fetch pages using ScraperAPI MCP tools.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/scraperapi/scraperapi-skills --skill scraperapi-lead-enrichment

After installing, type/scraperapi-lead-enrichmentin Claude Code to confirm it loaded.

Bundled filesassets/contact-card-template.mdreferences/contact-card-schema.md

Details

From the project README

Lead Enrichment

Given any seed information about a person or company, call ScraperAPI directly to search the web and fetch relevant pages, then synthesize everything into a structured contact card.

You — Claude — execute the API calls using the ScraperAPI MCP tools. Do not generate code for the user; run the searches yourself and report findings as you go.


Phase 1 — Analyze the Seed

Before running any searches, state clearly what you already know and what you're looking for. Categorize the seed:

Seed typeInformation gaps to fill
Person name (+ optional company)Title, email, phone, location, company details
Company nameWebsite, description, size, funding, contact info
Profile URL (LinkedIn, Crunchbase, etc.)Fetch directly; then fill remaining gaps
Email addressOwner name, company, company details
Domain / websiteCompany info, key contacts, funding

Announce before searching: "Starting with: [what I have]. Will search for: [what's missing]."


Phase 2 — Discovery Searches

Run searches by what you're looking for, not by which site to target. Google will surface whatever sources exist — company website, Crunchbase, Wikipedia, news, directories, LinkedIn, G2, etc. Collect all promising URLs from organic_results[].link and carry them into Phase 3.

Search tool: Call mcp__ScraperAPI__google_search with query, num: 10, and countryCode: "us". Read snippets carefully — they often contain the data you need without an extra fetch.

2a. Person name as seed
  1. Profile and context Query: "PERSON_NAME"+"COMPANY_NAME" Surfaces: personal website, bios, speaker profiles, press mentions, social profiles, company team pages.

  2. Contact info Query: "PERSON_NAME"+"COMPANY_NAME"+contact+email Surfaces: email addresses, contact pages, directory listings.

Then run 2b with the company name.

2b. Company name as seed (or company found in 2a)
  1. Company overview Query: "COMPANY_NAME" Surfaces: official website, Wikipedia, Crunchbase, AngelList, G2, Glassdoor, LinkedIn — whatever exists publicly.

  2. Financials and size Query: "COMPANY_NAME"+funding+revenue+employees Surfaces: Crunchbase, news articles, press releases, industry databases.

  3. Contact info Query: "COMPANY_NAME"+contact+email+phone Surfaces: contact pages, email formats, phone directories.

  4. Recent news Call mcp__ScraperAPI__google_news with query: "COMPANY_NAME" and num: 5. Extract news_results[].title, news_results[].date, news_results[].link. Keep the 3 most recent.

2c. Email address as seed
  1. Extract the domain (everything after @).
  2. Search for associated profiles: "EMAIL_ADDRESS"
  3. Run 2b with the domain as the company seed.
2d. Direct URL as seed

Skip Phase 2 — go directly to Phase 3 with the provided URL.


Phase 3 — Fetch Source Pages

From the URLs collected in Phase 2, select the most information-dense sources to fetch. Don't fetch everything — pick based on the gaps remaining in your contact card and the expected yield of each source.

3a. Source evaluation guide
Source typeTypical yieldFetch cost
Company website (/, /about, /contact, /team)Description, address, phone, email, social links, team members, tech signals1 credit/page
Crunchbase (crunchbase.com/organization/...)Funding rounds, investors, employee range, founded year~10 credits (needs render=true)
Wikipedia (en.wikipedia.org/wiki/...)Founded year, public financials, acquisitions, executive history1 credit
AngelList / Wellfound (wellfound.com/company/...)Funding, investors, tech stack, open roles~10 credits (needs render=true)
LinkedIn person (linkedin.com/in/...)Name, title, location, current company, education~10 credits (needs render=true&premium=true)
LinkedIn company (linkedin.com/company/...)Employee count, industry, HQ, founded year~10 credits (needs render=true&premium=true)
News article / press releaseFunding amounts, key hires, product launches1 credit
G2 / Capterra (g2.com/products/...)Product category, company size range, competitors1 credit
GitHub org (github.com/ORG)Tech stack, open source projects, activity1 credit
Job postingTech stack requirements, team growth signals1 credit
Glassdoor (glassdoor.com/...)Employee count, HQ, culture signals~10 credits (needs render=true)

Prefer cheap standard fetches (1 credit) over JS-rendered ones (10 credits) whenever the page is a static HTML site. Reserve render=true for pages that are known to require JavaScript (LinkedIn, Crunchbase, and SPA-style sites).

3b. Fetch pages

For each selected URL, call mcp__ScraperAPI__scrape with the appropriate options:

  • Standard HTML page (news, Wikipedia, company sites, G2, GitHub): url, outputFormat: "markdown"
  • JS-rendered page (LinkedIn, Crunchbase, React/SPA sites): url, outputFormat: "markdown", render: true, premium: true

For a company website, always fetch homepage + /about + /contact as three separate calls — they frequently contain different data. Extract every relevant field before moving to the next URL.


Phase 4 — Synthesize

Fill in the contact card from all gathered data. For each field:

  • Mark ✓ if confirmed in 2+ independent sources or from a structured endpoint
  • Mark ~ if found in one source with supporting context
  • Mark ? if a single unverified mention
  • Leave blank (—) if not found after reasonable search

See references/contact-card-schema.md for field definitions.

Use the template in assets/contact-card-template.md to present the output.


Phase 5 — Gap Report

After the contact card, list any high-priority fields still empty and explain briefly why they weren't found. Suggest one concrete follow-up per gap, for example:

  • Email not found → "Try Hunter.io (hunter.io) or Apollo (app.apollo.io) with the company domain"
  • Revenue not found → "Check SimilarWeb or Owler for traffic-based revenue estimates"
  • Phone not found → "Search "COMPANY NAME" phone inurl:contact or check the company's /contact page"
  • Funding not found → "No Crunchbase page found; the company may be bootstrapped or pre-launch"
  • Profile URL not found → "No public profile surfaced; the person may use a pseudonym or have low public presence"

Stop Conditions

Stop searching when any of the following is true:

  • All high-priority fields are filled (name, title, company, and at least two of: email, phone, location, profile URL)
  • You have made 8 or more API calls without finding new data
  • 3 or more consecutive tool calls returned errors or empty results

Do not loop past these limits. Announce when you've hit a stop condition.


Error Handling

Error typeWhat to do
MCP tool returns an error or empty resultRetry once with premium: true added (for scrape calls). Skip on second failure.
"No results" or empty organic_resultsTry a slightly rephrased query. Count as one call.
Tool call fails entirelyNote the failure, skip the URL, and continue with remaining sources.

Count failed tool calls against the 8-call stop condition.

Comments

Markdown supported