airbnb Experiences API

Operations for creating, reading, updating, and managing experience and activity listings on Airbnb.

Operations 5

GET /experiences List All Experiences #
POST /experiences Create a New Experience #
GET /experiences/{experience_id} Get an Experience #
PUT /experiences/{experience_id} Update an Experience #
DELETE /experiences/{experience_id} Delete an Experience #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/airbnb-experiences-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API 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 Specification

airbnb-experiences-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Airbnb Activities Bookings Experiences API
  description: The Airbnb Activities API allows approved partners to integrate with Airbnb Experiences, the platform's marketplace for hosted activities and tours. It provides endpoints for managing experience listings, handling bookings, and synchronizing availability for activities offered by local hosts. Partners can use the API to build integrations that help experience hosts manage their offerings alongside other tour and activity platforms, enabling centralized management of schedules, pricing, and guest communications.
  version: 2025.03.31
  contact:
    name: Airbnb Developer Support
    url: https://developer.withairbnb.com/
  termsOfService: https://www.airbnb.com/terms
servers:
- url: https://api.airbnb.com/v2
  description: Airbnb Production API Server
security:
- oauth2: []
tags:
- name: Experiences
  description: Operations for creating, reading, updating, and managing experience and activity listings on Airbnb.
paths:
  /experiences:
    get:
      operationId: listExperiences
      summary: List All Experiences
      description: Retrieves a paginated list of all experience listings managed by the authenticated partner. Supports filtering by status and activity category.
      tags:
      - Experiences
      parameters:
      - $ref: '#/components/parameters/limitParam'
      - $ref: '#/components/parameters/offsetParam'
      - name: status
        in: query
        description: Filter experiences by their current status on the platform.
        schema:
          type: string
          enum:
          - active
          - inactive
          - pending
          - suspended
      - name: category
        in: query
        description: Filter experiences by activity category.
        schema:
          type: string
      responses:
        '200':
          description: A paginated list of experiences.
          content:
            application/json:
              schema:
                type: object
                properties:
                  experiences:
                    type: array
                    items:
                      $ref: '#/components/schemas/Experience'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
        '401':
          description: Authentication credentials are missing or invalid.
    post:
      operationId: createExperience
      summary: Create a New Experience
      description: Creates a new experience listing on Airbnb with the provided details including activity type, location, description, pricing, and scheduling information. The experience will be in a pending state until reviewed and approved by Airbnb.
      tags:
      - Experiences
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExperienceCreate'
      responses:
        '201':
          description: The experience was successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Experience'
        '400':
          description: The request body contains invalid or missing fields.
        '401':
          description: Authentication credentials are missing or invalid.
  /experiences/{experience_id}:
    get:
      operationId: getExperience
      summary: Get an Experience
      description: Retrieves the full details of a specific experience listing by its unique identifier, including description, schedule, pricing, and host information.
      tags:
      - Experiences
      parameters:
      - $ref: '#/components/parameters/experienceIdParam'
      responses:
        '200':
          description: The experience details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Experience'
        '401':
          description: Authentication credentials are missing or invalid.
        '404':
          description: The experience was not found.
    put:
      operationId: updateExperience
      summary: Update an Experience
      description: Updates an existing experience listing with the provided fields. Only the fields included in the request body will be modified.
      tags:
      - Experiences
      parameters:
      - $ref: '#/components/parameters/experienceIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExperienceUpdate'
      responses:
        '200':
          description: The experience was successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Experience'
        '400':
          description: The request body contains invalid or missing fields.
        '401':
          description: Authentication credentials are missing or invalid.
        '404':
          description: The experience was not found.
    delete:
      operationId: deleteExperience
      summary: Delete an Experience
      description: Removes an experience listing from the Airbnb platform. Active bookings must be resolved before an experience can be deleted.
      tags:
      - Experiences
      parameters:
      - $ref: '#/components/parameters/experienceIdParam'
      responses:
        '204':
          description: The experience was successfully deleted.
        '401':
          description: Authentication credentials are missing or invalid.
        '404':
          description: The experience was not found.
        '409':
          description: The experience has active bookings and cannot be deleted.
components:
  schemas:
    ExperiencePricing:
      type: object
      required:
      - price_per_person
      - currency
      properties:
        price_per_person:
          type: number
          format: double
          description: The price per guest in the specified currency.
          minimum: 0
        currency:
          type: string
          description: The ISO 4217 currency code for pricing.
          pattern: ^[A-Z]{3}$
        group_discount:
          type: object
          description: Optional group discount configuration.
          properties:
            min_guests:
              type: integer
              description: Minimum number of guests to qualify for the group discount.
              minimum: 2
            discount_percent:
              type: number
              description: Percentage discount applied for group bookings.
              minimum: 0
              maximum: 100
    Experience:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier of the experience.
        name:
          type: string
          description: The display name of the experience.
        description:
          type: string
          description: The full description of the experience and what guests will do.
        category:
          type: string
          description: The activity category of the experience.
          enum:
          - arts_and_culture
          - entertainment
          - food_and_drink
          - nature_and_outdoors
          - sports
          - tours
          - wellness
        status:
          type: string
          description: The current status of the experience on the platform.
          enum:
          - active
          - inactive
          - pending
          - suspended
        location:
          $ref: '#/components/schemas/ExperienceLocation'
        duration_minutes:
          type: integer
          description: The duration of the experience in minutes.
          minimum: 30
        max_guests:
          type: integer
          description: The maximum number of guests per session.
          minimum: 1
        pricing:
          $ref: '#/components/schemas/ExperiencePricing'
        languages:
          type: array
          description: The languages in which the experience is offered.
          items:
            type: string
        what_to_bring:
          type: array
          description: Items guests should bring to the experience.
          items:
            type: string
        accessibility:
          type: string
          description: Accessibility information for the experience.
        photos:
          type: array
          description: Photos showcasing the experience.
          items:
            $ref: '#/components/schemas/ExperiencePhoto'
        host:
          $ref: '#/components/schemas/ExperienceHost'
        created_at:
          type: string
          format: date-time
          description: The timestamp when the experience was created.
        updated_at:
          type: string
          format: date-time
          description: The timestamp when the experience was last updated.
    ExperienceLocation:
      type: object
      required:
      - city
      - country
      properties:
        meeting_point:
          type: string
          description: Description of where guests should meet for the experience.
        city:
          type: string
          description: The city where the experience takes place.
        state:
          type: string
          description: The state or province where the experience takes place.
        country:
          type: string
          description: The ISO 3166-1 alpha-2 country code.
          pattern: ^[A-Z]{2}$
        latitude:
          type: number
          format: double
          description: The latitude coordinate of the meeting point.
          minimum: -90
          maximum: 90
        longitude:
          type: number
          format: double
          description: The longitude coordinate of the meeting point.
          minimum: -180
          maximum: 180
    ExperienceUpdate:
      type: object
      properties:
        name:
          type: string
          description: The display name of the experience.
          maxLength: 100
        description:
          type: string
          description: The full description of the experience and what guests will do.
          maxLength: 5000
        category:
          type: string
          description: The activity category of the experience.
          enum:
          - arts_and_culture
          - entertainment
          - food_and_drink
          - nature_and_outdoors
          - sports
          - tours
          - wellness
        location:
          $ref: '#/components/schemas/ExperienceLocation'
        duration_minutes:
          type: integer
          description: The duration of the experience in minutes.
          minimum: 30
        max_guests:
          type: integer
          description: The maximum number of guests per session.
          minimum: 1
        pricing:
          $ref: '#/components/schemas/ExperiencePricing'
        languages:
          type: array
          description: The languages in which the experience is offered.
          items:
            type: string
        what_to_bring:
          type: array
          description: Items guests should bring to the experience.
          items:
            type: string
        accessibility:
          type: string
          description: Accessibility information for the experience.
    ExperienceCreate:
      type: object
      required:
      - name
      - description
      - category
      - location
      - duration_minutes
      - max_guests
      - pricing
      properties:
        name:
          type: string
          description: The display name of the experience.
          maxLength: 100
        description:
          type: string
          description: The full description of the experience and what guests will do.
          maxLength: 5000
        category:
          type: string
          description: The activity category of the experience.
          enum:
          - arts_and_culture
          - entertainment
          - food_and_drink
          - nature_and_outdoors
          - sports
          - tours
          - wellness
        location:
          $ref: '#/components/schemas/ExperienceLocation'
        duration_minutes:
          type: integer
          description: The duration of the experience in minutes.
          minimum: 30
        max_guests:
          type: integer
          description: The maximum number of guests per session.
          minimum: 1
        pricing:
          $ref: '#/components/schemas/ExperiencePricing'
        languages:
          type: array
          description: The languages in which the experience is offered.
          items:
            type: string
        what_to_bring:
          type: array
          description: Items guests should bring to the experience.
          items:
            type: string
        accessibility:
          type: string
          description: Accessibility information for the experience.
    ExperiencePhoto:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier of the photo.
        url:
          type: string
          format: uri
          description: The URL where the photo is hosted.
        caption:
          type: string
          description: A caption describing the photo.
        sort_order:
          type: integer
          description: The display position of the photo.
    Pagination:
      type: object
      properties:
        total:
          type: integer
          description: The total number of results available.
        limit:
          type: integer
          description: The number of results returned per page.
        offset:
          type: integer
          description: The current offset in the result set.
        has_more:
          type: boolean
          description: Whether more results are available beyond this page.
    ExperienceHost:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier of the experience host.
        name:
          type: string
          description: The display name of the host.
        bio:
          type: string
          description: A short biography of the host.
        profile_picture_url:
          type: string
          format: uri
          description: The URL of the host profile picture.
        superhost:
          type: boolean
          description: Whether the host has Superhost status.
  parameters:
    limitParam:
      name: limit
      in: query
      description: The maximum number of results to return per page.
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 25
    offsetParam:
      name: offset
      in: query
      description: The number of results to skip for pagination.
      schema:
        type: integer
        minimum: 0
        default: 0
    experienceIdParam:
      name: experience_id
      in: path
      required: true
      description: The unique identifier of the experience.
      schema:
        type: string
  securitySchemes:
    oauth2:
      type: oauth2
      description: Airbnb uses OAuth 2.0 for authentication. Partners must register their application to receive a client ID and secret, then obtain access tokens through the authorization code flow.
      flows:
        authorizationCode:
          authorizationUrl: https://www.airbnb.com/oauth2/auth
          tokenUrl: https://api.airbnb.com/v2/oauth2/authorizations
          scopes:
            experiences:read: Read experience information
            experiences:write: Create and update experiences
            bookings:read: Read booking information
            bookings:write: Confirm and cancel bookings
            messages:read: Read booking messages
            messages:write: Send messages to guests
externalDocs:
  description: Airbnb Developer Documentation
  url: https://developer.withairbnb.com/