Integración y API

API REST

API REST para integrar datos de contratos públicos en tus sistemas y automatizar flujos de trabajo

Características incluidas
7 endpoints REST
Autenticación Bearer token
Formato JSON
Paginación
Filtrado avanzado
Rate limiting configurable
Documentación completa
Ejemplos de código en 3 lenguajes

La API REST de concursos.top permite integrar datos de contratos públicos directamente en tus aplicaciones, CRM, ERP o dashboards. Sin interfaz web, acceso total a tus datos mediante JSON.

¿Qué puedo hacer con la API?

  • Buscar contratos con filtros programáticamente
  • Recibir webhooks cuando coinciden tus monitoreos
  • Gestionar monitoreos sin entrar a la web
  • Extraer datos para análisis y reportes
  • Automatizar flujos completos de captación

7 Endpoints disponibles

Método Endpoint Descripción Ejemplo
GET /api/v1/licitaciones Buscar contratos con filtros ?q=software®ion=ES53&limit=10
GET /api/v1/licitaciones/{id} Detalles de contrato específico /2026-001234
GET /api/v1/monitoreos Listar todos tus monitoreos Parámetros: limit, offset
POST /api/v1/monitoreos Crear nuevo monitoreo Body: {nombre, sectores, zonas}
PUT /api/v1/monitoreos/{id} Actualizar un monitoreo Body: {campos a actualizar}
DELETE /api/v1/monitoreos/{id} Eliminar un monitoreo /monitoreo_id
GET /api/v1/estadisticas Estadísticas de contratación ?sector=72®ion=ES53

Autenticación

Todos los endpoints requieren autenticación con Bearer Token en el header Authorization:

Authorization: Bearer tu_api_key_aqui

¿Cómo obtener tu API Key? Panel > Configuración > API Keys > Generar nueva clave

Ejemplos de código

const response = await fetch(
  'https://api.concursos.top/v1/licitaciones?q=software®ion=ES53',
  {
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  }
);
const contratos = await response.json();
console.log(contratos.data);

import requests

headers = {'Authorization': 'Bearer YOUR_API_KEY'}
response = requests.get(
  'https://api.concursos.top/v1/licitaciones',
  params={'q': 'software', 'region': 'ES53'},
  headers=headers
)
contratos = response.json()
print(contratos['data'])

$url = 'https://api.concursos.top/v1/licitaciones?q=software®ion=ES53';
$headers = array('Authorization: Bearer YOUR_API_KEY');

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
$contratos = json_decode($response);
echo $contratos->data;

const data = {
  nombre: 'Software IT',
  sectores: ['servicios_informaticos'],
  zonas: ['ES53'],
  palabras_clave: ['software', 'desarrollo'],
  presupuesto_min: 10000,
  presupuesto_max: 500000
};

const response = await fetch(
  'https://api.concursos.top/v1/monitoreos',
  {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(data)
  }
);
const resultado = await response.json();

Rate Limiting y Cuotas

  • Business: 1000 requests/día
  • Enterprise: 10000 requests/día o ilimitado
  • Rate limit: 100 requests/minuto (se reinicia cada minuto)
  • Timeout: 30 segundos por request
  • Máximo por respuesta: 10 MB de datos

Formato de respuesta

Éxito (HTTP 200):
{
  "success": true,
  "data": [{"id": "2026-001234", "titulo": "Desarrollo Software", "presupuesto": 50000}],
  "pagination": {"page": 1, "limit": 10, "total": 245, "pages": 25}
}
Error (HTTP 400):
{
  "success": false,
  "error": "Parámetro q es requerido",
  "code": "MISSING_PARAMETER"
}

Disponibilidad por plan

Nota: API está disponible a partir de Business.
Plan API Disponible Cuota
Free/Starter/Pro No incluido
Business 1000 requests/día + webhooks
Enterprise 10000 requests/día o ilimitado + soporte prioritario

Preguntas frecuentes

Actualmente no. La API es REST puro. Soporta cualquier lenguaje que haga HTTP requests (JavaScript, Python, PHP, Ruby, etc.)

No directamente (CORS). Desde backend sí. Usa un proxy en tu servidor si necesitas desde frontend JavaScript.

Sí, en Business+. Ver módulo de Webhooks para recibir notificaciones en tiempo real en tu servidor.

Recibirás HTTP 429 (Too Many Requests). Espera a que se reinicie el contador (cada minuto).

Sí. Misma base de datos, misma actualización en tiempo real. Los datos son idénticos.
Prueba sin compromiso

¿Quieres ver API REST en acción?

Solicita una demostración gratuita y descubre cómo este módulo puede transformar la gestión de tu policía local.

Comenzar Prueba Gratis