API reference

An API, and an MCP server

Launch extractions from your scripts, feed your CRM automatically, or let an AI assistant query your prospect database directly.

600
Req / min
50
Fields returned
7
Endpoints

Authentication

Every request requires an API key, generated from your workspace.

Header
Authorization: Bearer msk_live_YOUR_KEY

API access is included from the Pro plan. Rate limits are 120 requests/minute on Pro and 600 requests/minute on Scale. Every response carries the X-RateLimit-*headers.

Endpoints

POST/api/v1/search

Launches a search. With `wait: true`, returns the results directly.

GET/api/v1/search

Lists the organisation's searches.

GET/api/v1/search/{id}

Status, progress and statistics for one search.

GET/api/v1/search/{id}/results

Paginated results, with filters as URL parameters.

DELETE/api/v1/search/{id}

Deletes a search and its results.

GET/api/v1/categories

Taxonomy of 370 categories and the geographic reference data.

GET/api/v1/me

Organisation, plan, remaining quota and rate limits.

Full example

Find every plumber in Lyon with no website but whose email we have.

Request
curl -X POST https://mysearch.gg/api/v1/search \
  -H "Authorization: Bearer msk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "category": "plumber",
    "location": "Chicago, United States",
    "filters": { "website": "no", "email": "yes" },
    "limit": 500,
    "wait": true
  }'
Response
{
  "search_id": "8f3c…",
  "status": "completed",
  "location": "Chicago",
  "stats": {
    "total": 412,
    "with_email": 251,
    "without_website": 198,
    "average_score": 71
  },
  "places": [
    {
      "place_id": "ChIJ…",
      "name": "Miller & Sons Plumbing",
      "address": { "city": "Chicago", "postal_code": "60614" },
      "phone": "+13125550142",
      "emails": [
        { "email": "contact@…", "source": "website_mailto", "confidence": 92 }
      ],
      "website": null,
      "rating": 4.8,
      "review_count": 127,
      "score": {
        "value": 92,
        "grade": "A",
        "signals": [
          { "key": "no_website", "kind": "opportunity", "label": "No website" }
        ]
      }
    }
  ]
}

Available filters

In the request body for POST /search, as URL parameters for GET /results.

FilterValuesEffect
websiteyes / noHas a website, or not
emailyes / noAn email was found
phoneyes / noA phone number is present
mobileyes / noThe number is a mobile
claimedyes / noThe Google listing is claimed
facebook / instagram / linkedinyes / noPresent on that network
rating_min / rating_max0 – 5Rating bounds
reviews_min / reviews_maxintegerReview-count bounds
score_min0 – 100Minimum lead score

Error codes

401missing_api_key / invalid_api_keyKey missing, invalid or revoked
402quota_exceededLead quota exhausted for the cycle
403plan_requiredFeature not included in the plan
404not_foundResource not found
422invalid_requestMissing or invalid parameters
429rate_limit_exceeded / too_many_jobsToo many requests or concurrent searches
503engine_unavailableExtraction engine temporarily unavailable
MCP

MCP server

Plug Claude, ChatGPT or Gemini straight into mySearch. The assistant launches searches and reasons over the results without going through an export.

Exposed tools
  • search_places— launches a search and returns the enriched results
  • get_results— walks through a search's results with filters
  • list_searches— lists searches and their status
  • market_stats— aggregated read on a market: digital maturity, lead quality
  • list_categories— explores the category taxonomy

Example question for a connected assistant: “How many restaurants in Bordeaux have no website? Give me the twenty with the most reviews.”

MCP client configuration
{
  "mcpServers": {
    "mysearch": {
      "type": "http",
      "url": "https://mysearch.gg/api/mcp",
      "headers": { "Authorization": "Bearer msk_live_YOUR_KEY" }
    }
  }
}
A question about integrating? See the plans with API access