Dispola Places API
The Places API from Dispola — 1 operation(s) for places.
The Places API from Dispola — 1 operation(s) for places.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/dispola-ca:dispola-ca-places-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Dispolà Places API
version: 1.0.0
description: 'Les places dispo aujourd''hui, demain et cette semaine chez les pros du Grand Montréal, de Québec, Sherbrooke, Gatineau et d''ailleurs au Québec. Lecture seule : la demande elle-même vient de la personne, qui consent aux textos (sur le formulaire, ou par le code texto du serveur MCP). Mode d''emploi : https://dispola.ca/llms.txt. Serveur MCP (mêmes places, pour Claude, ChatGPT ou tout client MCP) : https://dispola.ca/mcp'
servers:
- url: https://dispola.ca
tags:
- name: Places
paths:
/api/places:
get:
operationId: listerPlaces
summary: Places libres
parameters:
- name: city
in: query
schema:
type: string
enum:
- montreal
- quebec
- sherbrooke
- gatineau
- rive-nord
- rive-sud
- ailleurs
- all
default: montreal
- name: category
in: query
required: false
schema:
type: string
enum:
- coiffure
- ongles
- cils
- sourcils
- esthetique
- massotherapie
- tatouage
- physiotherapie
- osteopathie
- kinesiologie
- therapie_sport
- chiropratique
- acupuncture
- name: neighborhood
in: query
required: false
description: Un bout du nom du quartier (plateau, verdun), sans accents ni majuscules obligatoires.
schema:
type: string
- name: condition
in: query
required: false
description: 'Une condition de santé : seulement les commerces Dispolà Pro qui se disent à l’aise avec elle (ex. maux_de_dos, stress). / Only Dispolà Pro businesses that checked this health condition.'
schema:
type: string
enum:
- acouphenes
- arthrite
- arthrose
- atm
- blessures_sportives
- bursite
- cancer
- canal_carpien
- capsulite
- circulation
- commotion
- coup_de_fouet
- douleur_chronique
- entorse
- epicondylite
- fasciite_plantaire
- fatigue
- hernie_discale
- maux_de_cou
- maux_de_dos
- maux_de_tete
- menopause
- oedeme
- plancher_pelvien
- posture
- inflammation
- readaptation
- sciatique
- scoliose
- sommeil
- stress
- tendinite
- torticolis
- digestif
- name: clientele
in: query
required: false
description: 'Une clientèle : seulement les commerces Dispolà Pro qui l’ont cochée (ex. femmes_enceintes, enfants, mobilite_reduite). / Only Dispolà Pro businesses that checked this clientele.'
schema:
type: string
enum:
- femmes_enceintes
- bebes
- enfants
- ados
- aines
- couples
- familles
- lgbtq
- autisme
- diabete
- deficience_intellectuelle
- sourdes
- mobilite_reduite
- name: exige.<code>
in: query
required: false
description: Un attribut obligatoire (codes de /api/attributs), par exemple exige.cheveux_boucles=1 ou exige.langues=en. 5 au plus. Les commerces dont on ne connaît pas la valeur sont exclus et comptés dans exclus_inconnu. / A required attribute; unknown values are excluded and counted.
schema:
type: string
- name: prefere.<code>
in: query
required: false
description: 'Un attribut souhaité : ceux qui l’ont montent en tête, personne n’est exclu. 10 au plus. / A preferred attribute: ranks matches first.'
schema:
type: string
- name: avec_rabais
in: query
required: false
description: 'avec_rabais=1 : seulement les places dont un service a un rabais du commerce (discount), sans les commerces sur demande.'
schema:
type: string
enum:
- '1'
- name: limit
in: query
required: false
description: Nombre au plus de places, et de commerces sur demande, dans la réponse. Les plus proches dans le temps d’abord.
schema:
type: integer
minimum: 1
maximum: 500
default: 50
responses:
'200':
description: Les places libres.
content:
application/json:
schema:
type: object
properties:
city:
type: string
category:
type:
- string
- 'null'
neighborhood:
type: string
description: Le quartier demandé, s’il y en a un.
checked_at:
type: string
format: date-time
total_places:
type: integer
description: Le nombre de places avant la limite.
exclus_inconnu:
type: integer
description: 'Avec exige : les commerces écartés parce qu’on ne connaît pas un attribut exigé.'
facettes:
type: array
description: 'Les attributs connus d’au moins un commerce des résultats : oui, non, inconnu (ou le compte de chaque choix), par commerce.'
items:
type: object
places:
type: array
items:
type: object
required:
- id
- type
- city
- starts_at
- ends_at
- services
- pro
- booking_url
properties:
id:
type: integer
type:
type: string
enum:
- reseau
- clinique
description: 'reseau : un.e pro du réseau Dispolà, la demande se fait sur Dispolà. clinique : un commerce (clinique ou salon) dont la page de réservation en ligne est publique, la personne y réserve elle-même.'
city:
type: string
enum:
- montreal
- quebec
- sherbrooke
- gatineau
- rive-nord
- rive-sud
- ailleurs
starts_at:
type: string
format: date-time
ends_at:
type: string
format: date-time
services:
type: array
description: Les services qui entrent encore dans la plage, chacun à sa première heure possible.
items:
type: object
properties:
service:
type: string
description: Code du service, par exemple ongles.gel (liste dans /llms.txt).
category:
type: string
enum:
- coiffure
- ongles
- cils
- sourcils
- esthetique
- massotherapie
- tatouage
- physiotherapie
- osteopathie
- kinesiologie
- therapie_sport
- chiropratique
- acupuncture
label:
type: object
properties:
fr:
type: string
en:
type: string
duration_min:
type: integer
starts_at:
type: string
format: date-time
price_cad:
type:
- number
- 'null'
description: Le prix à payer, rabais compris.
discount:
type: object
description: 'Un rabais poussé par le logiciel du commerce, déjà compté dans price_cad. regular_price_cad et percent_off ne sont donnés que si Dispolà a vu ce prix habituel depuis au moins 6 mois : sinon, dites « prix réduit », jamais « au lieu de ». ends_at : la vraie fin, au plus l''heure de la place.'
properties:
price_cad:
type: number
regular_price_cad:
type:
- number
- 'null'
percent_off:
type:
- integer
- 'null'
reason:
type: string
enum:
- annulation
- heure_creuse
- derniere_minute
reason_label:
type: object
properties:
fr:
type: string
en:
type: string
conditions:
type:
- string
- 'null'
ends_at:
type: string
format: date-time
neighborhood:
type:
- string
- 'null'
pro:
type: object
properties:
name:
type: string
url:
type: string
format: uri
address:
type: string
description: Son adresse civique, quand on la connaît.
conditions:
type: array
items:
type: object
properties:
code:
type: string
nom:
type: string
description: 'reseau seulement : les conditions de santé avec lesquelles le ou la pro se dit à l’aise. Absent si aucune.'
clienteles:
type: array
items:
type: object
properties:
code:
type: string
nom:
type: string
description: 'reseau seulement : les clientèles cochées par le ou la pro. Absent si aucune.'
booking_url:
type: string
format: uri
description: 'reseau : ajouter &service=<code> pour choisir le service.'
verified_at:
type: string
description: 'clinique seulement : quand la place a été vue libre.'
attributs:
type: object
description: 'Les attributs demandés (null si inconnus), puis au plus 5 autres : { code: { valeur, source (pro, plateforme, site, verifie), verifie_le } }.'
additionalProperties:
type:
- object
- 'null'
total_sur_demande:
type: integer
description: Le nombre de commerces sur demande avant la limite.
sur_demande:
type: array
description: 'Avec une catégorie : des commerces sans réservation en ligne, avec des moments estimés selon leurs heures d''ouverture, de demain à dans 4 jours. Ce ne sont pas des places : la personne ouvre request_url, coche au moins 2 heures et entre elle-même son cellulaire ; Dispolà appelle le commerce et lui texte l''heure confirmée. Absent s''il n''y en a aucun.'
items:
type: object
properties:
type:
type: string
enum:
- sur_demande
name:
type: string
city:
type: string
neighborhood:
type:
- string
- 'null'
address:
type: string
description: Son adresse civique, quand on la connaît.
a_confirmer:
type: boolean
enum:
- true
moments:
type: array
items:
type: object
properties:
moment:
type: string
description: Moment estimé, à confirmer par le commerce.
label:
type: object
properties:
fr:
type: string
en:
type: string
request_url:
type: string
format: uri
page_url:
type: string
format: uri
description: 'La fiche du commerce sur Dispolà : ses heures d’ouverture et comment demander un moment.'
waitlist:
type: object
description: 'Aucune place qui convient : la personne remplit elle-même le formulaire d''alerte texto.'
properties:
request_url:
type: string
format: uri
plages:
type: array
items:
type: string
description: AAAA-MM-JJ:jour, :am, :pm ou :soir (heure de Montréal).
texto:
type: string
description: Numéro où texter une demande.
'400':
description: city ou category inconnue.
content:
application/json:
schema:
type: object
properties:
error:
type: string
tags:
- Places