Loop
How it worksThe loopWhy LoopPricingDocs
guide Zapier · Webhooks · Looping · MCP

Use Loop with Zapier.

Call Loop's REST API from a Webhooks by Zapierstep for automation pipelines, or pair Loop's MCP endpoint with Zapier MCP so AI agents can search local businesses and trigger downstream app actions in the same turn. No key required in the free tier.

option 1 Webhooks by Zapier (automation pipeline)

The standard Zapier pattern: a trigger fires, a Webhooks by Zapier action fetches results from Loop, and downstream steps (email, Slack, Airtable, Sheets) act on each result. Zapier automatically parses the JSON response and exposes fields in the visual picker — no typed expressions needed.

Zap: Trigger → Webhooks GET (search) → map fields → downstream steps
Webhooks by Zapier — GET /v1/search
// Zap: Search Loop + use the result
//
// Step 1 — Trigger (Schedule by Zapier, Webhook, or any app)
//
// Step 2 — Webhooks by Zapier > Action: GET
//   URL:          https://api.stayinloop.dev/v1/search
//   URL Params:
//     q        → map from trigger, or type a literal (e.g. "vegan pizza")
//     location → Kreuzberg, Berlin
//     limit    → 5
//
// Zapier auto-parses the JSON response.
// Fields appear in the visual picker for the next step:
//
//   results__0__result_id           ← first result's stable ID
//   results__0__name                ← place name
//   results__0__confidence          ← data quality (0–1)
//   results__0__restaurant__vegan   ← vegan flag
//   results__0__restaurant__outdoor_seating
//   results__0__observed_at         ← data freshness
//
// (Double-underscore = Zapier's flattened path for nested JSON)

To act on more than the first result, add a Looping by Zapier step:

Looping by Zapier — iterate over results
// To act on every result (not just the first):
//
// Step 3 — Looping by Zapier > Create Loop from Line Items
//   Values: map "results" from step 2
//
// Each iteration exposes the fields of one result.
// Limit: Looping by Zapier supports up to 250 iterations per Zap.
//
// For complex JSON object arrays, add a Code by Zapier step
// before the loop to transform the array into line items:
//
// (JavaScript in Code by Zapier)
// const results = JSON.parse(inputData.results_json);
// return results.map(r => ({
//   id:         r.result_id,
//   name:       r.name,
//   confidence: r.confidence,
//   vegan:      r.restaurant?.vegan ?? null,
// }));

To report an outcome after acting on a result, add two more Webhooks steps — a GET for /v1/details/ to fetch a result_token, then a POST to /v1/report:

Webhooks by Zapier — GET details + POST report
// Zap step: Report outcome after acting on a result
//
// Step N — Webhooks by Zapier > Action: GET
//   URL:  https://api.stayinloop.dev/v1/details/[result_id]
//   (Swap [result_id] for the result_id field from step 2
//    using the visual field picker)
//
// Step N+1 — Webhooks by Zapier > Action: POST
//   URL:          https://api.stayinloop.dev/v1/report
//   Payload Type: JSON
//   Body:
//     result_token → pick field "result_token" from step N
//     outcome      → correct / wrong / booked / closed / other
//
// outcome must be one of those five strings.
// result_token is valid for 30 minutes after get_details().
option 2 Loop MCP + Zapier MCP (AI agents)

Zapier MCP (mcp.zapier.com) exposes Zapier app actions — Gmail, Slack, Google Sheets, and 9,000+ others — as tools for AI agents. It pairs naturally with Loop's MCP: add both to the same AI client and the agent can search for a restaurant with Loop, then send a confirmation email or update a spreadsheet with Zapier, all in one turn.

Note: Loop MCP handles search, details, verify, and report. Zapier MCP handles downstream app actions. They are complementary — add both to your MCP client.
Loop MCP + Zapier MCP — both in one client
// Pair Loop MCP + Zapier MCP so AI agents can search
// local businesses AND trigger Zapier app actions in one turn.
//
// 1. Get your personal Zapier MCP URL:
//    Go to mcp.zapier.com → create or open your MCP server
//    Add the Zapier actions your agent needs (Gmail, Sheets, Slack…)
//    Copy your personal server URL  ← treat it like a password
//
// 2. Add both MCP servers to Claude Desktop (claude.json):
//    {
//      "mcpServers": {
//        "loop":   { "url": "https://stayinloop.dev/mcp" },
//        "zapier": { "url": "<your Zapier MCP URL>" }
//      }
//    }
//
// 3. The AI agent can now:
//    search() / get_details() / verify() / report()  ← Loop tools
//    send email, update sheet, post to Slack…         ← Zapier tools
//
// Zapier MCP exposes 9,000+ app integrations.
// Loop MCP provides real-time local business data.
// They are complementary — add both.
API key (optional): Free tier — 30 reads/min, no key required. To get 60 reads/min and appear named on the signals board, add an Authorization header with value Bearer sk_live_…in the Webhooks step's Headers section.
Zapier field mapping: Zapier flattens nested JSON using double-underscore paths — results__0__name means results[0].name. Fields appear in the visual picker after the Webhooks step runs a test. For n8n users: results__0__name is Zapier's equivalent of n8n's $input.first().json.results[0].name.
← Full API referenceWatch your calls on the signals board →