Documentación API REST
Referencia completa de la API para endpoints de países, ciudades, rankings y búsqueda. Ejemplos de código en JavaScript y Python. Autenticación, límites. Plan gratuito.
Base URL
https://bamwor.com/api/v1Autenticación
Incluí tu API key en cada pedido usando uno de estos métodos:
X-API-Key: bw_live_your_key_here
# or
Authorization: Bearer bw_live_your_key_hereLos pedidos anónimos (sin key) están permitidos con límites menores: 10/min, 100/día.
Respuestas anónimas: los stats restringidos devuelven { "value": null, "restricted": true } en vez de los valores reales. Stats gratuitos (population, area_sq_km, gdp_per_capita) incluyen "restricted": false. Obtenés una API key gratis para acceso completo a más de 25 estadísticas.
Límites de Uso
| Plan | Por minuto | Por día | Precio |
|---|---|---|---|
| Anonymous | 10 | 100 | Gratis (sin key) |
| Free | 30 | 1,000 | $0 |
| Pro | 60 | 10,000 | $19.99/mo |
| Premium | 300 | 50,000 | $39.99/mo |
| Enterprise | 600 | 500,000 | Personalizado |
Los headers de rate limit se incluyen en cada respuesta: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Las solicitudes anónimas tienen una espera obligatoria de 5 segundos entre requests. Obtené una API key gratis en /developers/quickstart para acceso instantáneo sin espera.
Paginación
Los endpoints paginados aceptan los parámetros page y per_page. Por defecto: page=1, per_page=25 (máx 100).
{
"data": [...],
"pagination": {
"page": 1,
"per_page": 25,
"total": 261,
"total_pages": 11
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-03-11T10:00:00.000Z",
"cached": true
}
}Manejo de Errores
{
"error": {
"code": "NOT_FOUND",
"message": "Country \"xyz\" not found.",
"status": 404
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-03-11T10:00:00.000Z"
}
}| Status | Code | Descripción |
|---|---|---|
| 400 | BAD_REQUEST | Parámetros inválidos |
| 401 | INVALID_API_KEY | API key inválida o faltante |
| 403 | API_KEY_DISABLED | API key deshabilitada |
| 404 | NOT_FOUND | Recurso no encontrado |
| 429 | RATE_LIMIT_EXCEEDED | Demasiados pedidos |
| 500 | INTERNAL_ERROR | Error del servidor |
Referencia de Endpoints
/api/v1/countriesLista paginada de todos los países con estadísticas básicas.
| Name | Type | Required | Description |
|---|---|---|---|
page | integer | No | Page number (default: 1) |
per_page | integer | No | Items per page (default: 25, max: 100) |
region | string | No | Filter by region slug (e.g. south-america) |
sort | string | No | Sort by: name, population, area (default: name) |
curl -H "X-API-Key: bw_live_your_key" \
"https://bamwor.com/api/v1/countries?sort=population&per_page=5"{
"data": [
{
"iso_code": "CH",
"names": { "en": "China", "es": "China", "pt": "China", "it": "Cina" },
"slugs": { "en": "china", "es": "china", "pt": "china", "it": "cina" },
"coordinates": { "latitude": 35.0, "longitude": 105.0 },
"region": { "slug": "east-southeast-asia", "name": "East & Southeast Asia" },
"population": 1416043270,
"area_sq_km": 9596960,
"category": "country"
}, ...
],
"pagination": { "page": 1, "per_page": 5, "total": 261, "total_pages": 53 }
}/api/v1/countries/:slugDetalle completo del país con todas las estadísticas.
| Name | Type | Required | Description |
|---|---|---|---|
slug | string | Yes | Country slug in any language (e.g. argentina, japon), ISO code (AR, JP, US), or alias (usa, uk, vatican-city, uae) |
curl -H "X-API-Key: bw_live_your_key" \
https://bamwor.com/api/v1/countries/japan{
"data": {
"gec_code": "JA",
"iso_code": "JA",
"names": { "en": "Japan", "es": "Japón", "pt": "Japão", "it": "Giappone" },
"population": 123719238,
"population_year": 2025,
"area_sq_km": 377915,
"stats": {
"population": { "value": 123719238, "unit": "people", "year": 2025, "source": "CIA World Factbook" },
"gdp_ppp": { "value": 6025000000000, "unit": "USD", "year": 2023, "source": "CIA World Factbook" },
"ibeu": { "value": 56.32, "unit": "index score", "year": 2026, "source": "Bamwor Proprietary Index" },
...
},
"flag_url": "/flags/ja.png",
"map_url": "/maps/ja.png"
}
}
// gec_code: FIPS 10-4 country code (2 chars, differs from ISO 3166-1)
// population_year: year of the population estimate
// stats include 9 Bamwor indices (ibeu, ibcp, ibda, ibcx, ibee, ibfm, ibdi, ibed, ibsa)/api/v1/countries/:slug/citiesCiudades paginadas dentro de un país.
| Name | Type | Required | Description |
|---|---|---|---|
slug | string | Yes | Country slug |
sort | string | No | Sort by: population, name (default: population) |
min_population | integer | No | Minimum population filter |
province | string | No | Filter by province/admin1 name |
page | integer | No | Page number |
per_page | integer | No | Items per page (max: 100) |
curl -H "X-API-Key: bw_live_your_key" \
"https://bamwor.com/api/v1/countries/brazil/cities?min_population=500000"{
"data": [
{
"id": 3448439,
"names": { "en": "São Paulo", "es": "São Paulo", ... },
"coordinates": { "latitude": -23.5475, "longitude": -46.6361 },
"population": 11967825,
"province": "São Paulo"
}, ...
],
"pagination": { "page": 1, "per_page": 25, "total": 17 }
}/api/v1/cities/:idDetalle de ciudad por ID de GeoNames.
| Name | Type | Required | Description |
|---|---|---|---|
id | integer | Yes | GeoNames ID (e.g. 3435910 for Buenos Aires) |
curl -H "X-API-Key: bw_live_your_key" \
https://bamwor.com/api/v1/cities/3435910{
"data": {
"id": 3435910,
"names": { "en": "Buenos Aires", ... },
"coordinates": { "latitude": -34.6132, "longitude": -58.3772 },
"population": 13076300,
"elevation": 31,
"timezone": "America/Argentina/Buenos_Aires",
"province": "Buenos Aires F.D.",
"country": { "name": "Argentina", "slug": "argentina", "iso_code": "AR" }
}
}/api/v1/cities/:id/nearbyEncontrar ciudades cercanas usando búsqueda por radio PostGIS.
| Name | Type | Required | Description |
|---|---|---|---|
id | integer | Yes | Origin city GeoNames ID |
radius | integer | No | Radius in km (default: 50, max: 200) |
limit | integer | No | Max results (default: 10, max: 50) |
curl -H "X-API-Key: bw_live_your_key" \
"https://bamwor.com/api/v1/cities/3435910/nearby?radius=100&limit=5"{
"data": [
{
"id": 3432043,
"names": { "en": "La Plata", ... },
"coordinates": { "latitude": -34.9215, "longitude": -57.9545 },
"population": 694167,
"distance_km": 56.2
}, ...
],
"pagination": { "page": 1, "per_page": 5, "total": 5, "total_pages": 1 }
}/api/v1/searchBuscar países y ciudades por nombre en cualquiera de los 4 idiomas soportados.
| Name | Type | Required | Description |
|---|---|---|---|
q | string | Yes | Search query (min 2 chars, max 100) |
type | string | No | Filter: all, country, city (default: all) |
limit | integer | No | Max results (default: 20, max: 50) |
curl -H "X-API-Key: bw_live_your_key" \
"https://bamwor.com/api/v1/search?q=tokyo&type=city"{
"data": [
{
"type": "city",
"id": 1850147,
"names": { "en": "Tokyo", "es": "Tokio", "pt": "Tóquio", "it": "Tokyo" },
"coordinates": { "latitude": 35.6895, "longitude": 139.6917 },
"population": 8336599,
"country_code": "JA"
}
]
}/api/v1/rankingsListar todas las métricas de ranking disponibles.
curl -H "X-API-Key: bw_live_your_key" \
https://bamwor.com/api/v1/rankings{
"data": [
{ "slug": "population", "label": "Population", "url": "/api/v1/rankings/population" },
{ "slug": "area", "label": "Area (sq km)", "url": "/api/v1/rankings/area" },
{ "slug": "gdp", "label": "GDP (nominal)", "url": "/api/v1/rankings/gdp" },
{ "slug": "hdi", "label": "Human Development Index", "url": "/api/v1/rankings/hdi" },
...
]
}/api/v1/rankings/:slugRanking paginado de países por una métrica específica.
| Name | Type | Required | Description |
|---|---|---|---|
slug | string | Yes | Metric: population, area, density, gdp, gdp-per-capita, hdi, life-expectancy, ibeu, ibcp, ibda, ibcx, ibee, ibfm, ibdi, ibed, ibsa (16 total) |
region | string | No | Filter by region slug |
countries_only | boolean | No | When true, excludes non-country entities (World, EU, territories). Default: false |
page | integer | No | Page number |
per_page | integer | No | Items per page (default: 50) |
curl -H "X-API-Key: bw_live_your_key" \
"https://bamwor.com/api/v1/rankings/population?region=south-america&per_page=5"{
"data": [
{
"rank": 1,
"country": {
"iso_code": "BR",
"names": { "en": "Brazil", ... },
"region": { "slug": "south-america", "name": "South America" }
},
"value": 220051512,
"unit": null,
"year": 2025
}, ...
],
"pagination": { "page": 1, "per_page": 5, "total": 14 }
}Secciones de Países (Contenido Narrativo)
Accedé a contenido narrativo detallado de cualquier país — estructura de gobierno, economía, demografía, fuerzas armadas, infraestructura y más. Datos del CIA World Factbook. Este endpoint sirve el mismo contenido que alimentó el World Factbook — ideal para enciclopedias, apps educativas y agentes de IA.
Acceso: planes Premium y Enterprise. Países demo (Colombia, Italia, Australia) disponibles en todos los planes incluyendo anónimo.
/api/v1/countries/:slug/sectionsPerfil narrativo del país con 13 secciones: introducción, geografía, sociedad, gobierno, economía, energía, comunicaciones, transporte, fuerzas armadas, terrorismo, asuntos transnacionales, espacio, ambiente.
| Name | Type | Required | Description |
|---|---|---|---|
slug | string | Yes | Country slug, ISO code (AR, JP), or alias (usa, uk) |
section | string | No | Specific section key (e.g. government, economy). Omit for all sections. |
lang | string | No | Language: en, es, pt, it (default: en) |
curl -H "X-API-Key: bw_live_your_key" \
"https://bamwor.com/api/v1/countries/argentina/sections?section=government"{
"data": {
"country": { "name": "Argentina", "slug": "argentina", "iso_code": "AR" },
"sections": {
"government": {
"Country name": { "conventional long form": { "text": "Argentine Republic" }, ... },
"Government type": { "text": "presidential republic" },
"Capital": { "name": { "text": "Buenos Aires" }, ... },
...
}
},
"section_count": 1
}
}
// Non-premium: 403 PREMIUM_REQUIRED (demo: colombia, italy, australia)Gestión de API Keys
/api/v1/keysRegistrar una nueva API key gratis.
| Name | Type | Required | Description |
|---|---|---|---|
email | string | Yes | Your email address |
name | string | No | App or project name |
curl -X POST https://bamwor.com/api/v1/keys \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]", "name": "My App"}'{
"data": {
"api_key": "bw_live_a1b2c3d4e5f6...",
"plan": "free",
"limits": { "per_minute": 30, "per_day": 1000 },
"message": "Store this key securely — it cannot be retrieved later."
}
}/api/v1/keys/usageConsultar el uso actual de tu API key y límites restantes.
curl -H "X-API-Key: bw_live_your_key" \
https://bamwor.com/api/v1/keys/usage{
"data": {
"plan": "free",
"usage": {
"minute": { "used": 5, "limit": 30, "resets_in": 42 },
"day": { "used": 127, "limit": 1000, "resets_in": 54321 }
}
}
}