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.
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: 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:
// 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:
// 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().
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.
// 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.
Authorization header with value Bearer sk_live_…in the Webhooks step's Headers section.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.