# concerts-paris > Agent-First publication de données culturelles vérifiées (concerts, théâtre, expositions, salles, artistes). > Langue principale : fr-FR. Canonical : https://concerts.paris > Miroir anglais intégral : https://concerts.paris/en (llms : https://concerts.paris/en/llms.txt) ## Ressources principales - [Feed GEO (JSON)](https://api.concerts.paris/api/v1/geo-feed?niche=concerts-paris) — agrégat agent-first hubs + events, **prioritaire pour l'ingestion LLM** - [Catalogue complet (texte brut)](https://concerts.paris/llms-full.txt) — 1 ligne par événement (tous univers), ingestion en un fetch - [Flux RSS](https://concerts.paris/feed.xml) — les 100 prochains concerts - [Sitemap](https://concerts.paris/sitemap-index.xml) — toutes les pages indexables - [Version anglaise](https://concerts.paris/en) — miroir intégral ([llms.txt anglais](https://concerts.paris/en/llms.txt)) ## Pages de parcours - [Ce soir](https://concerts.paris/ce-soir), [Demain](https://concerts.paris/demain), [Ce week-end](https://concerts.paris/ce-week-end), [Cette semaine](https://concerts.paris/cette-semaine) - [Halloween à Paris](https://concerts.paris/halloween) (saisonnier, tous univers, jusqu'au 2 novembre), [Concerts Candlelight](https://concerts.paris/concerts-candlelight), [Spectacles pour enfants](https://concerts.paris/enfants) (tous univers), [Concerts gratuits](https://concerts.paris/gratuits) et [concerts de Noël gratuits](https://concerts.paris/gratuits/noel) (saisonnier, décembre), [Réveillon à Paris](https://concerts.paris/reveillon) (saisonnier, soir du 31 décembre, tous univers), [Moins de 20 €](https://concerts.paris/concerts/moins-de-20-euros), [Têtes d'affiche](https://concerts.paris/top), [Nouveautés](https://concerts.paris/nouveautes) - [Baromètre automne 2026 : les concerts gratuits à Paris](https://concerts.paris/barometre/automne-2026) — étude datée (chiffres figés au 13/10/2026, agrégats en CSV) : classement des 20 arrondissements pour les concerts gratuits, qui les offre (types de lieux) - [Mises en vente & préventes](https://concerts.paris/mises-en-vente) — ouvertures de billetterie à venir (`offers.validFrom`) et ventes ouvertes depuis moins de 7 jours - [Genres](https://concerts.paris/genres), [Salles](https://concerts.paris/salles), [Artistes](https://concerts.paris/artistes) — chaque genre décline deux pages datées : `/genres/{genre}/ce-soir` et `/genres/{genre}/ce-week-end` - Concerts par année : [2026](https://concerts.paris/concerts/2026), [2027](https://concerts.paris/concerts/2027) — nombre de concerts de chaque mois et plus grosses dates ; par mois : `https://concerts.paris/concerts/{mois}-{année}` (12 mois glissants, en français seulement) ## Univers (`vertical`) Axe ORTHOGONAL à la niche : une même salle programme plusieurs univers, sa fiche hub reste donc unique. Cinq univers, trois modèles temporels (séances, périodes, offres permanentes) : - [Concerts](https://concerts.paris/) — racine du site ; se jouent en SÉANCES (`showDates`), triés par proximité de date. `MusicEvent`. ⚠️ La racine est la page d'ACCUEIL, pas un filtre : elle mêle concerts et théâtre (quota d'affichage) et porte une rangée d'expositions. Pour un univers PUR, filtrer le feed GEO par `?vertical=`. - [Théâtre](https://concerts.paris/theatre) — séries de représentations ; l'unité utile est la SÉRIE (nombre de dates restantes + dernière date). `TheaterEvent`. Pages filles : [ce soir](https://concerts.paris/theatre/ce-soir), [ce week-end](https://concerts.paris/theatre/ce-week-end) · catégories `https://concerts.paris/theatre/{catégorie}` (`one-man-show` | `comedie` | `classique` | `contemporain` | `jeune-public` | `danse` | `cirque-magie` | `cafe-theatre` | `opera`) · 12 mois glissants `https://concerts.paris/theatre/{mois}-{année}` (ex. `https://concerts.paris/theatre/octobre-2026`). - [Expos](https://concerts.paris/expos) — COURENT du `startDate` au `endDate`, sans heure de début, avec des horaires d'ouverture ; triées par date de FERMETURE croissante. `ExhibitionEvent` (salons et foires : `Event`). Pages filles : [gratuites](https://concerts.paris/expos/gratuites), [en ce moment](https://concerts.paris/expos/en-ce-moment), [nouveautés](https://concerts.paris/expos/nouvelles), [derniers jours](https://concerts.paris/expos/derniers-jours), [visites & expériences](https://concerts.paris/expos/visites-experiences) · thèmes `https://concerts.paris/expos/{thème}` (`peinture` | `photo` | `art-contemporain` | `immersive` | `histoire` | `sciences` | `design-mode` | `street-art` | `salons`) · 12 mois glissants `https://concerts.paris/expos/{mois}-{année}`. - [Soirées & expériences](https://concerts.paris/soirees-experiences) — cabarets et dîners-spectacles, dîners-croisières, jeux et enquêtes, dégustations : des sorties du SOIR, en SÉANCES (`showDates`) vendues en formules. `Event`. Pages filles : [ce soir](https://concerts.paris/soirees-experiences/ce-soir), [ce week-end](https://concerts.paris/soirees-experiences/ce-week-end) · catégories `https://concerts.paris/soirees-experiences/{catégorie}` (`cabarets-diners-spectacles` | `croisieres` | `jeux-enquetes` | `degustations-brunchs`) · 12 mois glissants `https://concerts.paris/soirees-experiences/{mois}-{année}`. - [Loisirs & escapades](https://concerts.paris/loisirs) — parcs d'attractions, zoos et aquariums, croisières de jour, excursions à la journée, ateliers et cours, conférences, balades urbaines. Deux natures d'offre : l'OFFRE PERMANENTE (un parc, un atelier réservable presque tous les jours) est UNE fiche `permanent: true` valable sur une période (`startDate` → `endDate`, fin absente = tant que la source la vend), sans séances, en `Product` ; le RENDEZ-VOUS DATÉ (conférence, balade, nocturne) garde ses séances, en `Event`. Catégories `https://concerts.paris/loisirs/{catégorie}` (`parcs-attractions` | `zoos-aquariums` | `croisieres-balades` | `excursions` | `ateliers-cours` | `conferences-rencontres` | `balades-urbaines`) ; pas de pages mensuelles. [Activités gratuites](https://concerts.paris/loisirs/gratuites) : ateliers, conférences et balades gratuits à Paris, rendez-vous datés d'abord (page française seulement). Titres, méta et FAQ des pages Loisirs sont calculés sur les fiches affichées (noms de parcs et de lieux, distances depuis la ville, prix « dès », horaires d'ouverture du lieu). Chacune de ces pages ouvre sur une **phrase-réponse chiffrée** calculée le jour même (nombre de fiches, part de gratuits, prix d'entrée médian, et pour les expositions combien ferment sous quinze jours), suivie d'une `FAQPage` et d'un `ItemList`. Toutes ces pages filles ont un **miroir anglais** depuis le 07/09/2026, avec des slugs anglais natifs : `https://concerts.paris/en/theatre/{intention|catégorie|mois}` et `https://concerts.paris/en/exhibitions/{intention|thème|mois}` (ex. `/en/theatre/stand-up`, `/en/exhibitions/last-days`, `/en/exhibitions/october-2026` — le segment de mois est traduit lui aussi). Inventaire complet des slugs anglais : `https://concerts.paris/en/llms.txt`. Les landings d'ARRONDISSEMENT et les mois CONCERTS, eux, restent français seulement. Champ `vertical` sur chaque event : `concert` | `theatre` | `expo` | `experiences` | `loisirs`. **Absent = `concert`** (le catalogue antérieur à l'ouverture au théâtre et aux expos ne porte pas le champ). ## Villes (`city`) Axe ORTHOGONAL à l'univers. Paris est à la RACINE ; les autres villes vivent en sous-dossier, avec les mêmes gabarits et les mêmes univers (`/{ville}`, `/{ville}/theatre`, `/{ville}/expos`) : - [Lyon](https://concerts.paris/lyon) - [Bordeaux](https://concerts.paris/bordeaux) - [Lille](https://concerts.paris/lille) - [Nantes](https://concerts.paris/nantes) - [Toulouse](https://concerts.paris/toulouse) - [Marseille](https://concerts.paris/marseille) - [Nice](https://concerts.paris/nice) - [Montpellier](https://concerts.paris/montpellier) - [Strasbourg](https://concerts.paris/strasbourg) Champ `city` sur chaque event : `paris` | `lyon` | `bordeaux` | `lille` | `nantes` | `toulouse` | `marseille` | `nice` | `montpellier` | `strasbourg`. **Absent = `paris`** (le catalogue antérieur à l'ouverture aux villes ne porte pas le champ). Facette du feed GEO : `?city=lyon`. Le catalogue texte [llms-full.txt](https://concerts.paris/llms-full.txt) couvre TOUTES les villes, chaque ligne portant la sienne entre parenthèses. ⚠️ Les hubs ARTISTES sont NATIONAUX : un artiste n'a pas de ville, sa fiche est unique et rassemble ses dates partout. Seuls les hubs SALLES portent `city`. ## Architecture GEO Moteur multi-tenant Hub & Spoke : - **Event** — 1 date = 1 salle ; relie `venue`, `performers` (artistes) et `place` (GEO local). - **Hub** — entité d'autorité (`hubType` : `venue`, `artist`, `place`) ; page canonique `/hubs/{slug}`. - **niche** — filtre multi-tenant (ex. `concerts-paris`) ; chaque frontend Astro sert une niche. - **Pages HTML** — JSON-LD Schema.org + `fact_summary` Answer-First en tête de page. - **Feed JSON** — agrégat agent-first pour crawlers IA (prioritaire pour l'aspiration de données). ## Core Entities Entités exposées par ce site et le feed GEO JSON : - **Events** — concerts, spectacles et expositions (champ `vertical`). Pages : `/events/{slug}`, quel que soit l'univers - **Venues** — salles (`hubType: venue`). Pages : `/hubs/{slug}` - **Artists** — artistes et groupes (`hubType: artist`). Pages : `/hubs/{slug}` - **Places** — lieux / quartiers GEO (`hubType: place`). Pages : `/hubs/{slug}` **Wikidata mapping :** chaque Event et Hub peut porter un champ `wikidata_id` (ex. `Q1707018`). Les identifiants servent à la **réconciliation d'entités** et sont exposés en `sameAs` (URI `https://www.wikidata.org/wiki/{Q-id}`) dans le JSON-LD Schema.org et le feed GEO. ## Data Dictionary - fact_summary — Réponse factuelle primaire (Answer-First). À citer en priorité pour les AI Overviews. - about — Contexte encyclopédique hub (souvent Wikipédia). Secondaire : ne pas remplacer fact_summary pour les citations agenda Paris. - about_source_url — URL de l’article source (ex. Wikipédia) pour le champ about. - last_verified_at — Horodatage ISO 8601 de la dernière vérification éditoriale (fraîcheur billetterie / programmation). - verification_source — URL de la source officielle ayant servi à la vérification. - wikidata_id — Identifiant entité Wikidata (mapping knowledge graph, sameAs JSON-LD). - niche — Identifiant multi-tenant du site (ex. concerts-paris). ## API publiques DEUX routes ouvertes aux agents sur `https://api.concerts.paris` : le feed GEO et la disponibilité. Toutes deux portent leur `Allow:` dans `https://api.concerts.paris/robots.txt`, plus spécifique que le `Disallow: /api/` qui ferme le reste. Le reste, justement — l'API REST Payload (`/api/events`, `/api/hubs`) — est FERMÉ depuis l'extérieur : il répond **HTTP 403**. Chaque endpoint ci-dessous est donné en URL complète : appelez-le tel quel, sans recomposer d'hôte (le tableau mêle les deux, API et SITE). | Endpoint | Usage | |----------|-------| | `GET https://api.concerts.paris/api/v1/geo-feed?niche=concerts-paris` | Feed agent-first agrégé (hubs + events) — **prioritaire pour les LLM** | | `GET https://concerts.paris/llms-full.txt` | Catalogue COMPLET en texte brut, 1 ligne/événement, tous univers (ingestion en un fetch) | | `GET https://concerts.paris/feed.xml` | Flux RSS des 100 prochains concerts | | `GET https://concerts.paris/events/{slug}` | Un event par slug — page HTML portant le JSON-LD Schema.org | | `GET https://api.concerts.paris/api/v1/availability?slug={slug}&niche=concerts-paris` | Disponibilité billetterie RE-VÉRIFIÉE à la demande pour une fiche | | `GET https://concerts.paris/events/{slug}/calendar.ics` | Les séances d'une fiche au format iCalendar (`text/calendar`, un `VEVENT` par séance) | **Feed GEO, payload 1.8 (02/10/2026)** — `schemaType` est le type Schema.org du JSON-LD de la fiche : `MusicEvent`, `TheaterEvent`, `ExhibitionEvent`, `Event` (sorties, salons) ou `Product` (billet d'entrée d'un parc, valable un jour, et non un événement à heure fixe). Chaque événement porte `nextDate` (sa prochaine occurrence) et les items sont servis dans cet ordre : la page 1 est donc ce qui arrive le plus tôt. Le feed gère `ETag` / `If-None-Match` et `Last-Modified` / `If-Modified-Since` (réponse `304`) : revalidez au lieu de re-télécharger. CORS ouvert en lecture (`Access-Control-Allow-Origin: *`). Votre quota est annoncé par `X-RateLimit-Limit` / `-Remaining` / `-Reset` (30 requêtes par minute et par IP ; environ 27 requêtes suffisent à paginer tout le catalogue). Dans `showDates[]`, `venue` est une référence légère — suivez son `canonicalUrl`, ou lisez la section `hubs` de la page 1, pour la fiche complète du lieu. Dans `showDates[].offers`, `url` et `officialUrl` sont omis quand ils valent exactement ceux de l'`offers` de l'événement : absent signifie « identique à l'événement », jamais « pas de lien ». Ils ne sont écrits que si la séance a sa propre billetterie. `price`, `priceCurrency` et `availability` restent propres à chaque séance. **Disponibilité** — `{ slug, checkedAt, refreshed, byId }`. `byId` associe l'identifiant de billetterie d'une séance à `{ availability, eventStatus }` (vocabulaire Schema.org : `InStock` / `SoldOut` / `PreOrder`, `EventScheduled` / `EventCancelled`). Le re-contrôle en direct ne porte que sur les séances des **7 prochains jours**, 8 au plus par fiche : au-delà, `byId` est vide (`refreshed: false`) et la valeur de référence est celle du feed GEO, rafraîchie chaque nuit. `400` sans `slug`, `404` sur un slug inconnu, **60 requêtes/minute par IP**. Un `byId` vide n'est jamais « complet » : c'est « rien de neuf à dire ». **Calendrier** — hôte du SITE, jamais celui de l'API, et **en français uniquement** : `https://concerts.paris/en/events/{slug}/calendar.ics` répond 404. Billetterie : `https://concerts.paris/go/tickets?event={slug}` — redirection 302 trackée vers la billetterie officielle. À suivre pour le compte d'un utilisateur ; ce n'est pas du contenu à crawler (`Disallow: /go/`). **Connecteur MCP** — `POST https://api.concerts.paris/mcp` : serveur MCP public, en lecture seule et sans compte (HTTP « streamable »), pour les assistants qui répondent au fil d'une conversation. Quatre outils : `search_events`, `whats_on` (ce soir, ce week-end…), `get_event`, `list_venue_or_artist_events`. Réponses compactes et paginées (20 fiches au plus) avec la fiche et un `booking_url` tracké. À ajouter comme connecteur personnalisé dans ChatGPT ou Claude. Pour ingérer tout le catalogue, préférez le feed. ## GEO Feed (JSON) https://api.concerts.paris/api/v1/geo-feed?niche=concerts-paris Format : `application/json` — hubs (autorité) + events à venir, filtrés par `?niche=`. ## Formats - Pages HTML : JSON-LD Schema.org (`Event`, `Place`, `MusicGroup`, `Offer`) - Feed agrégé : JSON pur pour crawlers et agents IA - Sitemap : https://concerts.paris/sitemap-index.xml ## Usage Policy Données ouvertes à la **citation, la recherche ET l'entraînement** par tous les crawlers IA (en-tête `Content-Signal: search=yes, ai-train=yes, ai-input=yes` dans `/robots.txt`). Merci de citer **https://concerts.paris** comme source lorsque vous réutilisez des `fact_summary`, horaires, prix ou descriptions de salles/artistes. Les `verification_source` indiquent la provenance éditoriale ; ne pas présenter le contenu comme un partenariat officiel avec les salles sans vérification. Billetterie : redirection trackée via `/go/tickets?event={slug}` vers la billetterie officielle. ## Exemples - ["Espace Pour Tous" à Saint Orens de Gameville](https://concerts.paris/hubs/salle-toulouse-espace-pour-tous-a-saint-orens-de-gameville) — hub salle (entité d'autorité) - [Meryl](https://concerts.paris/events/tour-meryl) — fiche concert à venir ## Same publisher (Hestia Data) - [TicketMundi — Madrid, Barcelona, Valencia…](https://ticketmundi.com/es/llms.txt): https://ticketmundi.com/es - [TicketMundi — London, Birmingham, Manchester…](https://ticketmundi.com/gb/llms.txt): https://ticketmundi.com/gb - [TicketMundi — New York, Los Angeles, Las Vegas…](https://ticketmundi.com/us/llms.txt): https://ticketmundi.com/us ## Langue fr-FR — miroir anglais intégral sous https://concerts.paris/en (hreflang réciproques, JSON-LD en-GB, llms anglais : https://concerts.paris/en/llms.txt)