Your AI agent's lead-gen familiar.
One API call flow and a ready-made skill turn "plumbers in Austin" into structured JSON: Google Maps listings, owner names, checked emails, phone line types, tech stack and website text. Built so agents can run it safely, with budgets and clean failure states.
100 free leads · no card · try the demo endpoints with no key at all
curl -X POST "https://api.leadmerlin.com/api/v2/demo/searches" \
-H "content-type: application/json" \
-d '{"keyword":"plumber","location_codes":[1026201]}'
curl "https://api.leadmerlin.com/api/v2/demo/jobs/demo/results" Ask in plain English.
Give your agent lead-gen superpowers.
Paste one skill file into Claude Code, Cursor, or Codex. Your agent autonomously searches a niche and city, waits for enrichment, filters the best prospects, writes personalization, and exports a CSV — all from a plain-English request.
- Structured JSON an LLM can actually reason about
- Filter by reviews, tech stack, verified email, line type
- One credit per enriched lead — failures auto-refunded
- Demo endpoints to test with zero credits
# LeadMerlin — local lead gen for your agent
Search local businesses, enrich them, export CRM-ready CSV.
Auth: x-api-key header (key starts with lm_).
1. GET /v2/locations?q=austin → find location_code
2. POST /v2/searches { keyword, location_codes, max_leads } → job_id
3. GET /v2/jobs/:id → poll until "completed" or "failed"
4. GET /v2/jobs/:id/results → enriched businesses
5. Export to CSV (owner, emails, phones, pages...)
Already have domains? POST /v2/enrichments { leads:[{domain}] } Guardrails for autonomous runs.
Hard budget per run
Pass max_leads and a search never charges more than that. A low balance enriches the top-ranked matches and reports the rest as over_budget_count instead of failing.
Clear final states
Jobs end as completed or failed, with an error message. Out of credits is HTTP 402 insufficient_credits, so an agent knows to stop instead of retrying.
Free demo mode
Every endpoint has a /v2/demo mirror with fixture data: no key, no credits. Let the agent learn the flow before it spends anything.
Data an LLM can reason about
Owner, best email and phone are promoted to the top level; full email and phone lists, review counts, tech stack and crawled page text sit in predictable fields.
No charge for junk
Listings without a website and off-niche results (bars matching "basement") are never charged. Failed enrichments are refunded automatically.
Scraped text is data
The skill tells the agent to analyze website text, never follow instructions found in it, and to present owner names as "stated on the website".
Pay for leads, not add-ons.
Full pipeline on every lead, every plan.
Starter
- Dashboard, API and agent skill
- CSV export
- Failed enrichments refunded
Pro
Most popular- Dashboard, API and agent skill
- CSV export
- Failed enrichments refunded
Agency
- Dashboard, API and agent skill
- CSV export
- Failed enrichments refunded
Not ready to subscribe?
100 free leads, no card.
Which agents does it work with?
Anything that can make HTTP requests or follow a markdown instruction file: Claude Code, Cursor, Codex, Manus, n8n, Make, Zapier, or your own scripts.
Is there an MCP server?
Not yet. The skill file plus the REST API covers the same flow today. Tell us if MCP would change things for you.
How do I keep an agent from burning credits?
Pass max_leads on every search, test on the /v2/demo endpoints first, and start each search once (a POST retry starts a second paid job). GET /v2/usage shows the balance.
How long does a search take?
Searching is quick; enrichment crawls every website, so most jobs take a minute or a few, longer for big cities. Poll GET /v2/jobs/:id every 5 seconds.
Your first 100 leads are free.
No credit card required.