Come Alone da Meet & Mint Developers · feed de eventos v1

Para developers e parceiros

O feed de eventos Come Alone

Todos os eventos da comealone.app, em JSON e RSS simples: eventos selecionados para ir sozinho, a partir de dados abertos das cidades, resumidos por palavras nossas, cada um com uma capa original. Sem chave, sem login, CORS aberto. Gratuito para uso não comercial com atribuição; planos comerciais e white-label para produtos, media e cidades.

  • 1179eventos futuros
  • 250cidades
  • CC BY 4.0gratuito com atribuição

Endpoints

Ficheiros estáticos, reconstruídos após cada lote

Tudo fica em https://comealone.app/feed/v1/. Os ficheiros são regenerados quando acrescentamos eventos (normalmente todos os dias) e ficam em cache durante 30 minutos no edge. Só são incluídos eventos futuros — os passados saem automaticamente.

  • /feed/v1/events.jsonTodos os eventos futuros, ordenados por start, mais meta (count, cities, license, generated_at, docs_url).
  • /feed/v1/cities.jsonTodas as cidades com país, fuso horário, contagens de eventos e os respetivos URLs de feed.
  • /feed/v1/city/<slug>.jsonUma cidade. Os slugs são ASCII em minúsculas com hífenes: madrid, san-sebastian, new-taipei.
  • /feed/v1/events.rssRSS 2.0 de todos os eventos futuros — título, ligação oficial, descrição, pubDate (= início), guid, capa como enclosure.
  • /feed/v1/city/<slug>.rssRSS por cidade. Adicione-o a um leitor ou a uma ferramenta de newsletters, ou coloque-o num <link rel="alternate">.
  • /feed/v1/widget.jsWidget pronto a usar que apresenta os próximos eventos de uma cidade na sua página (ver abaixo).

As respostas trazem Access-Control-Allow-Origin: * e Cache-Control: public, max-age=1800. Não há limite de pedidos para os ficheiros estáticos; ainda assim, guarde em cache do seu lado durante pelo menos 15 minutos.

Cidades com mais eventos neste momento

A lista completa, com os slugs, está em cities.json.

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.

CampoTipoSignificado
idstringChave estável do evento (também é o nome do ficheiro da capa). Use-a para eliminar duplicados.
titlestringTítulo do evento, em inglês, escrito pela nossa equipa.
descriptionstring | nullDuas ou três frases por palavras nossas. Nunca o texto do organizador.
startstringInício local em ISO 8601 com desvio UTC, p. ex. 2026-10-14T17:30:00+02:00.
endstring | nullFim local, no mesmo formato.
timezonestring | nullFuso IANA, p. ex. Europe/Madrid. Derivado da cidade.
citystringNome da cidade tal como aparece no site.
city_slugstringSlug ASCII em minúsculas; o feed por cidade é /feed/v1/city/{slug}.json.
countrystring | nullNome do país; country_code é o código ISO 3166-1 alpha-2.
venuestring | nullLocal ou ponto de encontro.
addressnullReservado. As moradas não estão no conjunto de dados atual.
categorystringUma de Music, Culture, Learning, Social, Outdoors, Food and drink, Nightlife, Arts & crafts, Sports.
pricestring"free", um montante encontrado na descrição (p. ex. "€2.50") ou "low-cost". is_free é o boolean.
source_urlstringA página oficial do organizador. Coloque sempre uma ligação para ela.
organizerstring | nullNome do host da página oficial (p. ex. barcelona.cat); os nomes dos organizadores ainda não estão nos dados.
cover_urlstring | nullIlustração original, 960×600 WebP, CC BY 4.0 como o resto do feed.
languagesstring[] | nullCódigos ISO 639-1 quando a descrição indica que o evento decorre numa determinada língua.
updated_atstringQuando o conjunto de dados subjacente foi alterado pela última vez (UTC).
urlstringA 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.

Início rápido

Poucas linhas até ao primeiro evento

curl + jq

# The feed is free to read — no key, no login
curl -s https://comealone.app/feed/v1/events.json | jq '.events[0:3] | .[] | {title, start, city, source_url}'

# The currently live event count for one city
curl -s https://comealone.app/feed/v1/city/madrid.json | jq '.meta.count'

# Check how fresh the file you got is
curl -s https://comealone.app/feed/v1/events.json | jq '.meta.count, .meta.generated_at'

# RSS
curl -s https://comealone.app/feed/v1/events.rss | head -20

JavaScript (browser / Node 18+)

// JavaScript (browser or Node 18+)
const r = await fetch('https://comealone.app/feed/v1/city/madrid.json');
const { meta, events } = await r.json();
console.log(meta.count, 'events in', meta.city);
for (const e of events.slice(0, 5)) {
  console.log(new Date(e.start).toLocaleString(), e.title, e.venue, e.source_url);
}

Deteção automática de RSS

<link rel="alternate" type="application/rss+xml"
      title="Come Alone — Madrid"
      href="https://comealone.app/feed/v1/city/madrid.rss">

Adicione o feed por cidade a um leitor ou a uma ferramenta de newsletters, ou coloque-o num <link rel="alternate">.

Bloco de atribuição (copie isto)

<p>Events by <a href="https://comealone.app/">Come Alone / Meet &amp; Mint</a></p>

Atribuição no plano gratuito: um “Events by Come Alone / Meet & Mint” visível junto à lista e uma ligação para o source_url de cada evento. Essa é toda a licença (CC BY 4.0).

Widget incorporável

Uma tag script, uma lista dos eventos desta noite

Coloque a tag onde a lista deve aparecer. Apresenta os próximos eventos de uma cidade com miniaturas das capas, ligações para as páginas oficiais e uma ligação “Open in Meet & Mint”. Sem dependências, ~4 KB, os estilos estão limitados ao widget e seguem o tipo de letra da sua página.

<script src="https://comealone.app/feed/v1/widget.js"
        data-city="madrid"
        data-limit="5"></script>
AtributoPredefiniçãoSignificado
data-city(todas as cidades)Slug da cidade em cities.json. Omita-o para uma lista de todas as cidades.
data-limit5Quantos eventos mostrar (1–50).
data-category(todas)Apenas esta categoria, p. ex. Music.
data-freefalsetrue mostra apenas eventos gratuitos.
data-themelightlight, dark ou auto (segue o sistema do visitante).
data-titleGo alone in <city>Texto do título; uma string vazia oculta-o.
data-target(depois do script)Seletor CSS de um elemento onde apresentar a lista, em alternativa.

Apresentar num contentor específico

<!-- Render into a specific container instead of inline -->
<div id="come-alone-events"></div>
<script src="https://comealone.app/feed/v1/widget.js"
        data-city="helsinki"
        data-limit="8"
        data-free="true"
        data-theme="auto"
        data-target="#come-alone-events"></script>

Pré-visualização em direto

A pré-visualização acima é o widget real, alimentado pelo próprio feed deste site.

Preços

Gratuito para ler, justo para construir

O feed é aberto. O que paga é o direito de o usar dentro de um produto comercial, sem o nosso nome, com suporte e um esquema estável.

Open

€0CC BY 4.0
  • Sites pessoais, comunitários, de investigação e não comerciais
  • JSON, RSS e o widget
  • Atribuição “Come Alone / Meet & Mint” e uma ligação para a página oficial de cada evento
  • Disponibilidade em regime de melhor esforço (best-effort), o esquema pode mudar com aviso nesta página
Começar já

Commercial & white-label

desde €49/ mês
  • Utilização em produtos pagos, apps, sites de media e portais de cidades
  • Widget sem a nossa marca, as suas cores
  • Versão de esquema fixada, registo de alterações por e-mail, suporte em 48 horas
  • Campos extra a pedido (moradas, coordenadas, as suas categorias), prioridade para novas cidades
Escreva-nos

Cidades, entidades de turismo e redações: digam-nos de que cidades e línguas precisam e nós preparamos um feed e um orçamento. Os contactos estarão nesta página em breve — por agora, contacte a equipa Meet & Mint através de meetmint.app.

Boas práticas

Como usar bem

  1. Coloque uma ligação para a página oficial. O source_url é onde as pessoas se inscrevem, confirmam preços e veem alterações de última hora. Nunca o esconda.
  2. Mostre as horas no fuso horário do evento. Cada evento tem timezone; um concerto em Taipé às 19:30 não é às 13:30.
  3. Guarde em cache durante 15–30 minutos. Reconstruímos os ficheiros após cada lote; o edge guarda em cache durante 30 minutos. Consultar mais vezes devolve apenas o mesmo ficheiro.
  4. Mantenha a atribuição. No plano gratuito, “Events by Come Alone / Meet & Mint” com uma ligação para comealone.app, visível junto à lista.
  5. Use o id para eliminar duplicados. É estável entre reconstruções; updated_at indica quando o conjunto de dados mudou pela última vez.

Perguntas frequentes

FAQ para developers e pequenos parceiros

O que é o feed de eventos Come Alone e quanto custa?

O feed são todos os eventos da comealone.app, em JSON e RSS simples: eventos selecionados para ir sozinho, a partir de dados abertos das cidades, resumidos por palavras nossas, cada um com uma capa original. Sem chave, sem login, CORS aberto. É gratuito para uso não comercial com atribuição; planos comerciais e white-label para produtos, media e cidades.

Os endpoints respondem sem qualquer chave ou conta e enviam Access-Control-Allow-Origin: *, por isso uma página de browser no seu próprio domínio pode chamá-los diretamente. Não há limite de pedidos para os ficheiros estáticos; ainda assim, guarde em cache do seu lado durante pelo menos 15 minutos.

Neste momento o feed tem 1179 eventos em 250 cidades. Estes números mudam, por isso leia o próprio meta.count e meta.generated_at quando precisar do valor atual.

Há dois planos. Open — €0, CC BY 4.0: sites pessoais, comunitários, de investigação e não comerciais; JSON, RSS e widget; atribuição e uma ligação para a página oficial de cada evento; disponibilidade em regime de melhor esforço (best-effort), o esquema pode mudar com aviso nesta página. Commercial & white-label — desde €49 por mês: utilização em produtos pagos, apps, sites de media e portais de cidades; widget sem a nossa marca, as suas cores; versão de esquema fixada, registo de alterações por e-mail, suporte em 48 horas; campos extra a pedido (moradas, coordenadas, as suas categorias), prioridade para novas cidades.

Cidades, entidades de turismo e redações: digam-nos de que cidades e línguas precisam e nós preparamos um feed e um orçamento. Os contactos estarão nesta página em breve — por agora, contacte a equipa Meet & Mint através de meetmint.app.

Que licença se aplica e o que tenho de fazer para usar o feed?

Todo o feed está sob CC BY 4.0. O próprio feed indica-o no campo meta.license, que diz: CC BY 4.0 — attribution 'Come Alone / Meet & Mint'. As capas fazem parte da mesma licença: as ilustrações são imagens originais geradas por IA, criadas pela Meet & Mint, e fazem parte do feed licenciado.

A atribuição é a condição da licença no plano gratuito, não um favor que pedimos. Essa é toda a licença (CC BY 4.0).

Note que a CC BY 4.0 abrange os dados do feed e as capas. Por si só, não lhe dá o direito de usar os nomes Meet & Mint ou Come Alone como a sua própria marca, nem cobre um produto comercial: dentro de um produto pago precisa do plano comercial (pergunta 1).

Qual é o texto exato de atribuição que tenho de mostrar?

Mostre este texto, de forma visível, junto à lista: Events by Come Alone / Meet & Mint — e, juntamente com ele, uma ligação para comealone.app.

São, portanto, duas ligações:

  1. comealone.app junto à lista (a atribuição).
  2. A página oficial de cada evento que mostrar — o campo source_url. É onde as pessoas se inscrevem, confirmam preços e veem alterações de última hora. Nunca o esconda.

O feed usa o mesmo texto noutra ordem em meta.license — attribution 'Come Alone / Meet & Mint'. Para o crédito visível, use o texto acima. O HTML pronto está no bloco de atribuição.

Com que frequência o feed é atualizado e com que frequência devo consultá-lo?

Os ficheiros são estáticos e reconstruídos: são regenerados quando acrescentamos eventos (normalmente todos os dias) e ficam em cache durante 30 minutos no edge. Os ficheiros só contêm eventos futuros — os passados saem automaticamente.

Guarde em cache durante 15–30 minutos. Reconstruímos os ficheiros após cada lote; o edge guarda em cache durante 30 minutos. Consultar mais vezes devolve apenas o mesmo ficheiro.

Todas as respostas do feed trazem Cache-Control: public, max-age=1800 (30 minutos). O campo meta.generated_at diz-lhe quando foi gerado o ficheiro que tem em mãos. Se fizer uma newsletter ou um resumo, agende a sua própria reconstrução para depois de essa data e hora mudar, e não com um temporizador fixo de hora a hora.

Posso obter apenas uma cidade?

Sim. De duas formas:

  • Feed da cidade: https://comealone.app/feed/v1/city/<slug>.json — uma cidade. Os slugs são ASCII em minúsculas com hífenes: madrid, san-sebastian, new-taipei.
  • RSS da cidade: https://comealone.app/feed/v1/city/<slug>.rss — adicione-o a um leitor ou a uma ferramenta de newsletters, ou coloque-o num <link rel="alternate">.

Não precisa de adivinhar o slug. https://comealone.app/feed/v1/cities.json lista todas as cidades com país, fuso horário, contagens de eventos e os respetivos URLs de feed, e cada entrada traz slug, count, free_count, next_start, feed_json, feed_rss e page_url. O widget aceita o mesmo slug em data-city (ver a secção Widget acima).

Quantos eventos tem a cidade que lhe interessa, e quantos são gratuitos, está em count e free_count em cities.json: estes valores mudam a cada reconstrução.

Como filtro eventos gratuitos, uma categoria ou um intervalo de datas?

Eventos gratuitos e categoria, no widget: os atributos do widget data-free="true" e data-category="Music" fazem exatamente isso (predefinições: data-free false, data-category todas as categorias). As categorias são Music, Culture, Learning, Social, Outdoors, Food and drink, Nightlife, Arts & crafts, Sports — category é exatamente uma dessas strings.

No JSON ou RSS em bruto, os endpoints não aceitam parâmetros de consulta. Não existe ?city=, ?category=, ?from= ou ?to= documentado. No caminho JSON, a filtragem fica a seu cargo, com base nos próprios campos:

  • gratuito: is_free (boolean) — price é a versão em string da mesma informação: "free", um montante encontrado na descrição, como "€2.50", ou "low-cost".
  • categoria: category, compare com a string exata acima.
  • datas: start (e end, quando existe) estão em ISO 8601 com desvio UTC, p. ex. 2026-10-14T17:30:00+02:00, por isso compará-los é seguro em qualquer linguagem. O próprio feed já contém apenas eventos futuros.

Não há parâmetros de intervalo de datas documentados, por isso proceda assim: leia um feed e filtre o array do seu lado. Se precisar de algo que os endpoints não oferecem, isso é uma conversa a ter com a equipa Meet & Mint (pergunta 1, plano comercial).

O que faz o widget e posso alterar o seu estilo?

Uma única tag script apresenta os próximos eventos de uma cidade com miniaturas das capas, ligações para as páginas oficiais e uma ligação “Open in Meet & Mint”. Sem dependências, ~4 KB, os estilos estão limitados ao widget e seguem o tipo de letra da sua página. Todos os atributos estão na tabela da secção Widget.

Cores personalizadas e remoção da nossa marca são funcionalidades do plano comercial: o plano Open recebe o widget padrão, e o plano Commercial & white-label inclui “widget sem a nossa marca, as suas cores”. Não publicamos tokens de tema nem uma lista de variáveis CSS, por isso alterações de estilo para além de data-theme não estão documentadas.

Existe um plugin para WordPress ou Squarespace?

Não temos plugin. O que incorpora é uma única tag script HTML (ou um URL de feed); não há plugins nem módulos específicos para nenhum CMS. Eis como colocá-lo nas plataformas mais comuns.

HTML simples — cole isto onde a lista deve aparecer:

<script src="https://comealone.app/feed/v1/widget.js"
        data-city="madrid"
        data-limit="5"></script>

WordPress — use um bloco HTML personalizado (Custom HTML, no editor de blocos) ou o widget “Custom HTML” (temas clássicos/antigos); ambos guardam tags <script>. Para uma colocação pontual num modelo de página, acrescente a mesma tag ao ficheiro do modelo. Evite o bloco Parágrafo simples: o editor pode remover a tag.

Squarespace — adicione um bloco de código (Add Block → Code) à secção da página, ou coloque a tag em Settings → Advanced → Code Injection para a ter em todo o site. Cole a tag tal como está.

Sem JavaScript nenhum — use antes o feed RSS:

<link rel="alternate" type="application/rss+xml"
      title="Come Alone — Madrid"
      href="https://comealone.app/feed/v1/city/madrid.rss">

Todas as respostas do feed são um GET simples com Access-Control-Allow-Origin: *, por isso uma página estática ou uma tarefa do lado do servidor também pode obter o JSON e apresentar a lista por si. Os passos por plataforma acima são uma colocação padrão, não orientações do fornecedor da plataforma.

O que nunca está no feed? Contém dados pessoais?

Não há dados pessoais nem qualquer informação sobre participantes. Os ficheiros do feed são ficheiros estáticos públicos, sem chave, sem login e com Access-Control-Allow-Origin: *; o esquema não tem nenhum campo para um nome, um e-mail ou uma lista de participantes.

  • Não existe no feed nenhum campo de conta, nenhuma lista de convidados nem dados de “quem vai”. O único campo com aspeto de pessoa é organizer, e corresponde ao nome do host da página oficial (p. ex. nycgovparks.org); os nomes dos organizadores ainda não estão nos dados.
  • address é null em todos os eventos do conjunto de dados atual: reservado, as moradas não estão no conjunto de dados atual. O feed indica locais e pontos de encontro, não moradas.
  • As descrições são duas ou três frases por palavras nossas, nunca o texto do organizador — um resumo nosso, não uma cópia da página de origem.
  • A ter em conta: uma descrição pode citar um contacto que o organizador publicou na sua própria página pública — por exemplo, um e-mail na linha de reserva. Se mostrar as descrições sem as editar, mostra também esse e-mail. Trate as descrições como texto de terceiros, mantenha a atribuição e, se precisar de uma superfície sem dados pessoais, filtre ou reescreva as descrições.

Também nunca está no feed:

  • O texto integral da página de origem. As descrições são resumos nossos.
  • Moradas. address está reservado e é null.
  • Eventos passados. Os eventos mais antigos saem automaticamente.
  • Garantias de preço. price é “um montante encontrado na descrição” — para o valor total real, a fonte de verdade é a página oficial.
Quão estável é o esquema e o que acontece se um campo desaparecer?

A versão do esquema está fixada em v1 no URL: tudo fica em https://comealone.app/feed/v1/. O próprio meta do feed confirma-o (version: "1", docs_url: https://comealone.app/developers/).

O que prometemos:

  • Plano gratuito (Open): disponibilidade em regime de melhor esforço (best-effort), o esquema pode mudar com aviso nesta página.
  • Plano Commercial & white-label: versão de esquema fixada, registo de alterações por e-mail.

Assim, no plano gratuito, trate o esquema como estável na prática, mas não garantido: construa com base nos campos documentados, tolere campos desconhecidos e não falhe quando um campo opcional estiver ausente. Para tornar mais robusta uma integração no plano gratuito:

  1. Leia meta.version e meta.docs_url a partir dos próprios dados, em vez de os presumir.
  2. Proteja cada campo documentado como | null (end, timezone, venue, description, cover_url, languages, country, organizer).
  3. Use como chave de armazenamento o id, estável entre reconstruções, em vez da posição no array.
  4. Consulte esta página (https://comealone.app/developers/) após uma reconstrução se um campo de que depende mudar — é aí que os avisos são dados.

Resolução de problemas

Quando algo não funciona

SintomaCausaO que fazer
Área do widget vaziaA tag não está onde a lista deve ser apresentada, ou o contentor indicado em data-target ainda não existeColoque a tag <script> na posição onde a lista deve aparecer, ou acrescente o <div> antes da tag.
O widget mostra menos eventos do que data-limitHá menos eventos futuros nessa cidade do que o limite, ou o limite está fora de 1–50Verifique o count da cidade em cities.json; data-limit só aceita valores de 1 a 50.
Falta um campo em alguns eventosOs campos documentados como | null são opcionaisProteja contra null em end, timezone, venue, description, cover_url, languages, country, organizer. address é sempre null atualmente — está reservado.
Os números diferem dos que leu ontemOs ficheiros são reconstruídos à medida que se acrescentam eventos e que os passados saem; as caches duram até 30 minutosCompare meta.generated_at, não o seu próprio relógio, e volte a ler o endpoint.
As horas parecem desfasadasApresentou start no fuso de quem vêApresente no timezone do evento. Cada start já traz o seu desvio UTC.
A sua página bloqueia o pedidoEstá a fazer proxy do feed através de um backend que descarta pedidos de terceirosOs endpoints enviam Access-Control-Allow-Origin: * e não precisam de chave, por isso um fetch direto no browser funciona.
O slug de uma cidade dá 404Os slugs são ASCII em minúsculas com hífenes, e só as cidades listadas em cities.json têm feedLeia o slug em cities.json (san-sebastian, new-taipei) em vez de escrever o nome da cidade.

A app

Descarregue a app Meet & Mint — veja quem vai

A Meet & Mint: Events & Friends junta num só mapa os eventos e as pessoas perto de si, com um chat para cada evento. Vá sozinho, convide outro adulto ou organize o seu próprio passeio, jantar ou noite de jogos. A ligação “Open in Meet & Mint” do widget traz os seus visitantes até aqui.

  • Eventos e pessoas num só mapaAlterne com um toque; filtre por categoria, data, preço e com quem vai.
  • Um chat para cada eventoE uma sala para cada grupo que vai junto — combinem onde se encontrar antes de chegar.
  • Vá sozinhoOu convide outro adulto, ou leve as crianças quando o anfitrião recebe famílias. Lista de espera quando está cheio.
  • Privacidade por defeitoSó a localização aproximada, quem vai fica oculto por defeito, o ponto de encontro exato só para participantes confirmados.
Ícone da app Meet & MintMeet & Mint: Events & FriendsiPhone · Android

★ 4.5 na App Store · meetmint.app

A app Meet & Mint: um mapa de eventos e pessoas perto de si
Eventos perto de si e pessoas com quem ir, na app Meet & Mint
Um evento na Meet & Mint: vá sozinho, a dois ou em grupo
Salas de chat dos eventos e encontros a dois na Meet & Mint
Organizar o seu próprio evento na Meet & Mint leva minutos