OpenAPI Specification
openapi: 3.0.3
info:
title: OpenMercantil Public Billing Geocode API
version: 1.4.0
description: 'Public JSON API for Spanish company information derived from BORME and other
public sources. OpenMercantil is independent and informational; it is not
the BOE, BORME or Registro Mercantil and does not replace official
certificates or registry extracts. The API is free and public, requires no
API key, and is rate-limited per IP. Versions v1.0 through v1.4 are
available and documented at https://openmercantil.es/api/documentacion.
'
termsOfService: https://openmercantil.es/terminos-de-uso
contact:
name: OpenMercantil
url: https://openmercantil.es/soporte
email: social@openmercantil.es
license:
name: CC BY 4.0 For Derived Public-Data Outputs
url: https://creativecommons.org/licenses/by/4.0/
servers:
- url: https://openmercantil.es
description: Production
tags:
- name: Geocode
description: Geolocation enrichment
paths:
/api/v1/company/{slug}/geocode:
get:
tags:
- Geocode
summary: Geocode A Company Address
operationId: geocodeCompany
description: Resolve the registered address of the company to coordinates via Nominatim/OSM with caching (v1.2). Use `force=1` to bypass the cache.
parameters:
- name: slug
in: path
required: true
schema:
type: string
example: inditex-sa-a15075062
- name: force
in: query
required: false
schema:
type: integer
enum:
- 0
- 1
default: 0
description: Set to 1 to bypass cache and force a live geocoding lookup.
responses:
'200':
description: Geocode response
content:
application/json:
schema:
$ref: '#/components/schemas/Geocode'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
components:
schemas:
Geocode:
type: object
properties:
lat:
type: number
lng:
type: number
address:
type: string
source:
type: string
additionalProperties: true
ErrorResponse:
type: object
properties:
error:
type: string
message:
type: string
additionalProperties: true
responses:
TooManyRequests:
description: Rate limit exceeded
headers:
Retry-After:
description: Seconds to wait before retrying.
schema:
type: integer
X-RateLimit-Limit:
description: Maximum requests per window (60 per minute by IP on the public anonymous tier).
schema:
type: integer
X-RateLimit-Remaining:
description: Remaining requests in the current window.
schema:
type: integer
X-RateLimit-Reset:
description: Unix timestamp when the rate-limit counter resets.
schema:
type: integer
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
NotFound:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
securitySchemes:
sessionCookie:
type: apiKey
in: cookie
name: session
description: Session cookie issued after web sign-in, required only for billing endpoints.