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.
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.
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 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:
X-API-Key): 600 requests
per minute per key.
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.
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.
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}
create_task=1 — opens the post-a-task flow on landing.service — the service slug (matches
Service.slug in the spec; values come from
GET /api/v1/services).
This is the only supported off-platform pre-fill contract. Additional query parameters are ignored.
Three minimum-viable curl recipes covering the
common connector scenarios. Endpoints documented in detail in
the reference section further down.
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'
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'
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'
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.
Muovi ships two MCP server transports that expose the same six read-only tools on top of this API:
https://mcp.muovi.com.ar/
No auth required. The endpoint accepts JSON-RPC 2.0 POSTs and
returns the same payloads as the npm package below.
npx @muovi/mcp-server
See the package on npm for installation snippets.
Both transports expose the same six tools (names + input shapes are identical):
muovi_search_professionals —
GET /v1/professionals
muovi_get_professional —
GET /v1/professionals/{slug}
muovi_list_services —
GET /v1/services
muovi_list_cities —
GET /v1/cities
muovi_get_reviews —
GET /v1/professionals/{slug}/reviews
muovi_create_task_link — pure formatter for
the deep-link contract documented above. Makes no HTTP call.
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.
The full endpoint reference is rendered below from the live OpenAPI spec.