All skills
placesinstagram Local & Places

Local Contact Harvester

Turn a niche and a city into a deduped, CRM-ready list of every local business with phones, emails, and social handles

Run this skill with your agent
1. Connect the MCP server
https://apidirect.io/mcp?token=YOUR_API_KEY
2. Then just say to your agent
Build me a CRM-ready contact list of every {niche} in {city}, enriched with emails and Instagram handles
In clients that support MCP prompts (Claude Desktop, Claude Code, Cursor) this skill appears as a prompt named local-contact-harvester. Any agent can also call get_skill(skill_id="local-contact-harvester") to pull these steps on demand.

What it does

Google Maps exposes phones, websites, and social links for nearly every local business. One broad sweep plus per-pin detail enrichment turns a map into an import-ready contact database, with Instagram pulled in to verify and add public emails.

Who it's for: Agencies, SDRs, and local service sellers building outbound lists

Inputs

Input Required Description Example
niche Yes The business category to harvest med spa
city Yes City and region to search Austin, Texas

How your agent runs it

  1. 1
    search_places(query="{niche} {city}", pages=20)

    Pull up to ~200 pins, keep only business_status==OPERATIONAL, and collect each place_id, name, and website.

  2. 2
    place_details(place_id=<place_id>)

    For each pin extract emails_and_contacts (emails, phone_numbers, instagram/facebook/linkedin) and owner_name, then dedupe rows by phone number and domain.

  3. 3
    instagram_user_profile(url=<instagram_url>)

    For pins that exposed an Instagram link, pull public_email, followers, and category to enrich and validate the contact record.

Delivers: A deduped, CRM-ready spreadsheet of every {niche} in {city} with name, phone, email, website, owner, and social handles

Tools used

The full playbook

This is exactly what the MCP returns to your agent (via the local-contact-harvester prompt or get_skill tool), with your inputs filled in.

SKILL: Local Contact Harvester
Google Maps exposes phones, websites, and social links for nearly every local business. One broad sweep plus per-pin detail enrichment turns a map into an import-ready contact database, with Instagram pulled in to verify and add public emails.

You are running this skill on API Direct via its MCP tools. Execute the steps below yourself by calling the named tools in order — values in <angle brackets> come from a previous step. Then deliver the result described at the end.

INPUTS:
  - niche (required): <niche — ASK THE USER>
  - city (required): <city — ASK THE USER>

STEPS:
  1. Tool `search_places` — search_places(query="<niche> <city>", pages=20)
     Pull up to ~200 pins, keep only business_status==OPERATIONAL, and collect each place_id, name, and website.
  2. Tool `place_details` — place_details(place_id=<place_id>)
     For each pin extract emails_and_contacts (emails, phone_numbers, instagram/facebook/linkedin) and owner_name, then dedupe rows by phone number and domain.
  3. Tool `instagram_user_profile` — instagram_user_profile(url=<instagram_url>)
     For pins that exposed an Instagram link, pull public_email, followers, and category to enrich and validate the contact record.

DELIVER: A deduped, CRM-ready spreadsheet of every <niche> in <city> with name, phone, email, website, owner, and social handles

Note: each underlying tool call is billed at its normal endpoint price; get_sentiment adds a small per-page surcharge. Page through results as needed but stop once you have enough to deliver the outcome.