Muovi Public API — Getting Started

The Muovi /v1 API is a read-only HTTP interface to Muovi's verified Argentine service professionals, their reviews, and the service / city catalogs. It's intended for LLM connectors (ChatGPT search, Perplexity, Claude, MCP-aware agents) and traditional clients that need structured data instead of HTML scraping.

Base URL

https://muovi.com.ar/api/v1

The full machine-readable spec is served verbatim at https://muovi.com.ar/openapi.yaml. The reference documentation below renders that spec live — no snapshot — so any change to the contract shows up here on the next page load.

Authentication

No authentication is required for read access. Every endpoint in this spec is public and unauthenticated. Connectors are encouraged (but not required) to send an X-API-Key header to qualify for higher per-minute rate-limit tiers. Without a key, requests are rate-limited per source IP. Contact api@muovi.com.ar to request a key.

Connectors should also send the X-Muovi-Connector: <name> header (e.g. X-Muovi-Connector: chatgpt-search) so we can attribute traffic and surface integration-specific issues.

Rate-limit tiers

Rate limits are enforced per source IP and (when present) per X-API-Key. Exceeding the limit returns 429 with the standard error envelope and a Retry-After hint. Default tiers:

These defaults are subject to change without a contract bump — the live numbers are enforced by the rate-limit middleware documented in MOB-139. Always honour the Retry-After header.

Anti-leakage policy

Phone, WhatsApp, and email are NOT exposed by design. Muovi is a trust-first, on-platform marketplace. Public payloads never include phone, phone_number, mobile, whatsapp, wa.me URLs, email, contact_email, tel: URIs, or contactPoint.telephone. Contact between consumers and professionals happens exclusively through the on-platform conversation flow reachable from each professional's profile_url. Connectors that synthesise or scrape off-platform contact handles are in violation of Muovi's data-use terms.

Deep-link contract

Connectors that want to drop the consumer back onto Muovi pre-filled with a task draft for a specific service should use the documented deep-link query parameters:

https://muovi.com.ar/?create_task=1&service={service_slug}

This is the only supported off-platform pre-fill contract. Additional query parameters are ignored.

Worked examples

Three minimum-viable curl recipes covering the common connector scenarios. Endpoints documented in detail in the reference section further down.

(a) Search by service + city

Find electricians in CABA, 20 per page, blended rating descending (default ranking):

curl -s 'https://muovi.com.ar/api/v1/professionals?service=electricidad&city=ar-bue-caba&limit=20' \
  -H 'X-Muovi-Connector: my-connector/1.0'

(b) Filter by has_matricula

Only return gas fitters in CABA who have a verified professional matrícula on file:

curl -s 'https://muovi.com.ar/api/v1/professionals?service=gasista&city=ar-bue-caba&has_matricula=true' \
  -H 'X-Muovi-Connector: my-connector/1.0'

(c) Fetch a professional by slug

Get the canonical detail payload for one professional. profile_url in the response is the only sanctioned contact channel — append ?create_task=1&service={slug} to deep-link into the on-platform task-creation flow.

curl -s 'https://muovi.com.ar/api/v1/professionals/juan-p-electricista-caba' \
  -H 'X-Muovi-Connector: my-connector/1.0'

Language

This documentation is in English (technical audience), but the underlying content is in Spanish (es-AR). Pro names, service names, neighbourhood names, review text, and HTML landing pages (/electricistas/caba/, /plomeros/caba/, etc.) are all Spanish-language. See /llms.txt for the canonical content map.

Model Context Protocol (MCP)

Muovi ships two MCP server transports that expose the same six read-only tools on top of this API:

Both transports expose the same six tools (names + input shapes are identical):

The anti-leakage policy applies at the MCP boundary as well — every tool response runs through assertNoLeakage before reaching the agent. A leaky payload is surfaced as an MCP tool error, never as leaked contact data.

Reference

The full endpoint reference is rendered below from the live OpenAPI spec.