Esquema
Um evento, normalizado
Todos os feeds têm a forma { "meta": {…}, "events": [ … ] }. O meta tem generated_at, count, cities, license e docs_url; os feeds por cidade acrescentam city, slug, country e timezone. Os campos marcados com | null podem faltar em alguns eventos.
| Campo | Tipo | Significado |
id | string | Chave estável do evento (também é o nome do ficheiro da capa). Use-a para eliminar duplicados. |
title | string | Título do evento, em inglês, escrito pela nossa equipa. |
description | string | null | Duas ou três frases por palavras nossas. Nunca o texto do organizador. |
start | string | Início local em ISO 8601 com desvio UTC, p. ex. 2026-10-14T17:30:00+02:00. |
end | string | null | Fim local, no mesmo formato. |
timezone | string | null | Fuso IANA, p. ex. Europe/Madrid. Derivado da cidade. |
city | string | Nome da cidade tal como aparece no site. |
city_slug | string | Slug ASCII em minúsculas; o feed por cidade é /feed/v1/city/{slug}.json. |
country | string | null | Nome do país; country_code é o código ISO 3166-1 alpha-2. |
venue | string | null | Local ou ponto de encontro. |
address | null | Reservado. As moradas não estão no conjunto de dados atual. |
category | string | Uma de Music, Culture, Learning, Social, Outdoors, Food and drink, Nightlife, Arts & crafts, Sports. |
price | string | "free", um montante encontrado na descrição (p. ex. "€2.50") ou "low-cost". is_free é o boolean. |
source_url | string | A página oficial do organizador. Coloque sempre uma ligação para ela. |
organizer | string | null | Nome do host da página oficial (p. ex. barcelona.cat); os nomes dos organizadores ainda não estão nos dados. |
cover_url | string | null | Ilustração original, 960×600 WebP, CC BY 4.0 como o resto do feed. |
languages | string[] | null | Códigos ISO 639-1 quando a descrição indica que o evento decorre numa determinada língua. |
updated_at | string | Quando o conjunto de dados subjacente foi alterado pela última vez (UTC). |
url | string | A página da cidade do evento em comealone.app. |
Exemplo de resposta
{
"meta": {
"generated_at": "2026-10-16T14:00:00+00:00",
"count": 1179,
"cities": [
"Barcelona",
"Madrid",
"…"
],
"license": "CC BY 4.0 — attribution 'Come Alone / Meet & Mint'",
"docs_url": "https://comealone.app/developers/"
},
"events": [
{
"id": "h02-certosa-boari",
"title": "Guided visit: 20th-century marble sculpture in the Certosa",
"description": "A field lecture with Marco Marchesini among the sculptures of Bologna's monumental Certosa cemetery, comparing works by Bruno Boari with other 20th-century funerary art. Linked to the Boari exhibition at the Museo civico del Risorgimento. Paid; see the official page.",
"start": "2026-10-18T10:00:00+02:00",
"end": "2026-10-18T11:30:00+02:00",
"timezone": "Europe/Rome",
"city": "Bologna",
"city_slug": "bologna",
"country": "Italy",
"country_code": "IT",
"venue": "Cimitero della Certosa di Bologna",
"address": null,
"category": "Culture",
"price": "low-cost",
"is_free": false,
"source_url": "https://culturabologna.it/events/569205",
"organizer": "culturabologna.it",
"cover_url": "https://mm-covers.pages.dev/m/h02-certosa-boari.webp",
"languages": null,
"updated_at": "2026-10-18T18:32:26+00:00",
"url": "https://comealone.app/#bologna"
}
]
}
As datas estão na hora local do evento, com desvio UTC explícito, por isso new Date(e.start) está sempre correto; mostre-as em e.timezone, e não no fuso de quem vê, salvo se for essa a intenção.