Alto (Vebra / Zoopla) Products API

The Products API from Alto (Vebra / Zoopla) — 4 operation(s) for products.

Operations 7

GET /products/premium-listings/{uuid} Returns listing for specific uuid #
PATCH /products/premium-listings/{uuid} Updates highlights for a specific uuid #
GET /products/premium-listings Returns all requested upgrades to premium listings that the caller has access to #
POST /products/premium-listings Create the new upgrade to premium listing #
GET /products/weekly-featured-properties/{uuid} Returns a WFP activated listing for a specific uuid #
GET /products/weekly-featured-properties Returns all requested upgrades to WFPs that the caller has access to #
POST /products/weekly-featured-properties Activate a listing as a WFP #

Documentation

Specifications

Other Resources

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/alto-vebra-products-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

alto-vebra-products-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Alto Vebra Products API
  version: 1.0.0
  contact:
    name: Zoopla Pro P&A Team
    url: https://www.zoopla.co.uk/
    email: purchaseandactivationteam@zoopla.co.uk
  description: 'Operations tagged Products across 2 of this provider''s published API definitions: zoopla-premium-listing-activations-openapi.json, zoopla-weekly-featured-property-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://services.zoopla.co.uk
security:
- oAuthSample:
  - api/api_access
tags:
- name: Products
paths:
  /products/premium-listings/{uuid}:
    get:
      summary: Returns listing for specific uuid
      description: If the UUID exists, it will return a premium listing, if it does not or if it is an invalid UUID it will return an error
      parameters:
      - in: path
        name: uuid
        schema:
          type: string
        required: true
        description: Returns premium listing for a given uuid
      responses:
        '200':
          description: OK. Request body contains premium listing for a given UUID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PremiumListing'
        '404':
          description: Not found. Premium listing doesn't exist or client doesn't have access to it
        '500':
          description: Internal Server Error
      tags:
      - Products
      operationId: getProductsPremiumListingsByUuid
      x-operation-id-source: derived
    patch:
      summary: Updates highlights for a specific uuid
      description: If the highlights are valid and the premium listing is `ACTIVE` and not currently awaiting an existing update it will return the premium listing with a `WAITING_FOR_UPDATE` status. If the highlights are invalid, the premium listing is not currently `ACTIVE` or the listing is already `WAITING_FOR_UPDATE` it will return the appropriate error.
      parameters:
      - in: path
        name: uuid
        schema:
          type: string
        required: true
        description: The uuid for the premium listing that the caller is trying to update
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateHighlights'
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PremiumListing'
          description: Accepted. We are trying to update highlights on your premium listing. Please check the result soon.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
          description: Bad request. Something wrong with the request, for example invalid highlights provided.
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
          description: Forbidden client error, for example, no access to branch.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
          description: Resource not found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
          description: Conflict
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
          description: Internal Server Error
      tags:
      - Products
      operationId: patchProductsPremiumListingsByUuid
      x-operation-id-source: derived
    servers:
    - url: https://services.zoopla.co.uk
  /products/premium-listings:
    get:
      summary: Returns all requested upgrades to premium listings that the caller has access to
      description: If no parameters are given, the response will return all premium listings for the caller. If the response is an **empty** array it means that there are no premium listings for the caller, activated or not. If the caller needs to filter premium listings, we provide the below query parameters.
      parameters:
      - in: query
        name: listingId
        schema:
          type: string
        required: false
        description: 'The Zoopla internal listingId to return activation requests for. If listingId and customerListingId are provided together it will return an `error`. If no listingId is given it will return all premium listing activations.

          '
      - in: query
        name: customerListingId
        schema:
          type: string
        required: false
        description: 'An optional parameter which is a customer identifier of a listingId which Zoopla can match to an internal listingId. If the customerListingId cannot be matched to a listingId it will return an `error`. If customerListingId and listingId are provided together it will return an `error`.

          '
      - in: query
        name: date_from
        schema:
          type: string
        required: false
        description: 'And optional parameter to filter response by created date starting from date provided. An RFC3339 time format is required. E.g 2022-02-11T14:14:10.776Z

          '
      - in: query
        name: date_to
        schema:
          type: string
        required: false
        description: "And optional parameter to filter response by created date ending with the date provided. An RFC3339 time format is required. E.g 2022-02-11T14:14:10.776Z      \n"
      responses:
        '200':
          description: OK. Request body contains the list of requested upgrades to premium listing.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PremiumListings'
        '400':
          description: Bad request. There was something wrong with the request, for example both listingId and customerListingId provided together
        '500':
          description: Internal Server Error
      tags:
      - Products
      operationId: getProductsPremiumListings
      x-operation-id-source: derived
    post:
      summary: Create the new upgrade to premium listing
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePremiumListing'
      responses:
        '202':
          headers:
            Location:
              schema:
                type: string
                description: Location of the created activation
                example: https://{server}/premium-listings/{uuid}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PremiumListing'
          description: Accepted. We are trying to make your listing premium. Please check the result soon.
        '303':
          headers:
            Location:
              schema:
                type: string
                description: Location of the existing activation
                example: https://{server}/premium-listings/{uuid}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PremiumListing'
          description: See other. A premium listing for this listing Id already exists and is either pending or already activated. See location of existing activation.
        '400':
          description: Bad request. Something wrong with the request, for example listing_id not provided.
        '413':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
          description: Payload too large. There was something wrong with the request for example, customDetails data exceeds max memory limit.
        '500':
          description: Internal Server Error
      tags:
      - Products
      operationId: postProductsPremiumListings
      x-operation-id-source: derived
    servers:
    - url: https://services.zoopla.co.uk
  /products/weekly-featured-properties/{uuid}:
    get:
      summary: Returns a WFP activated listing for a specific uuid
      description: if the uuid exists will return a WFP listing, if it does not or it is an invalid UUID will return an error
      parameters:
      - in: path
        name: uuid
        schema:
          type: string
        required: true
        description: returns the WFP for a given uuid
      responses:
        '200':
          description: OK. Request body contains the WFP for the given UUID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WeeklyFeaturedProperty'
        '404':
          description: Not found. WFP doesn't exist or client doesn't have access to it
        '500':
          description: Internal Server Error
      tags:
      - Products
      operationId: getProductsWeeklyFeaturedPropertiesByUuid
      x-operation-id-source: derived
    servers:
    - url: https://services.zoopla.co.uk
  /products/weekly-featured-properties:
    get:
      summary: Returns all requested upgrades to WFPs that the caller has access to
      description: If no parameters are given, the response will return all WFPs for the caller. If the response is an **empty** array it means that there are no WFPs for the caller, activated or not. If the caller needs to filter WFPs, we provide the below query parameters.
      parameters:
      - in: query
        name: listingId
        schema:
          type: string
        required: false
        description: 'The Zoopla internal listingId to return activation requests for. If listingId and customerListingId are provided together it will return an `error`. If no listingId is given it will return all WFP activations.

          '
      - in: query
        name: customerListingId
        schema:
          type: string
        required: false
        description: 'An optional parameter which is a customer identifier of a listingId which Zoopla can match to an internal listingId. If the customerListingId cannot be matched to a listingId it will return an `error`. If customerListingId and listingId are provided together it will return an `error`.

          '
      - in: query
        name: date_from
        schema:
          type: string
        required: false
        description: 'And optional parameter to filter response by created date starting from date provided. An date only format (YYYY-MM-DD) is required. E.g 2022-02-11

          '
      responses:
        '200':
          description: OK. Request body contains the list of requested upgrades to WFP.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WeeklyFeaturedProperties'
        '400':
          description: Bad request. There was something wrong with the request, for example both listingId and customerListingId provided together
        '500':
          description: Internal Server Error
      tags:
      - Products
      operationId: getProductsWeeklyFeaturedProperties
      x-operation-id-source: derived
    post:
      summary: Activate a listing as a WFP
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWeeklyFeaturedProperty'
      responses:
        '202':
          headers:
            Location:
              schema:
                type: string
                description: Location of the created activation
                example: https://{server}/weekly-featured-properties/{uuid}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WeeklyFeaturedProperty'
          description: Accepted. We are processing your request to make your listing a WFP. Please check the result soon.
        '303':
          headers:
            Location:
              schema:
                type: string
                description: Location of the existing activation
                example: https://{server}/weekly-featured-properties/{uuid}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors_2'
          description: See other. A WFP listing for this listingId already exists and is either pending or already activated. See location of existing activation.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors_2'
          description: Bad request. The was something wrong with the request, for example listingId not provided.
        '413':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors_2'
          description: Payload too large. There was something wrong with the request for example, customDetails data exceeds max memory limit.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors_2'
          description: Internal Server Error
      tags:
      - Products
      operationId: postProductsWeeklyFeaturedProperties
      x-operation-id-source: derived
    servers:
    - url: https://services.zoopla.co.uk
components:
  schemas:
    Status:
      type: object
      description: 'Status of request with error response

        '
      properties:
        result:
          type: string
          enum:
          - PENDING
          - ACTIVATED
          - DEACTIVATED
          - SCHEDULED
          - ERROR
          example: ERROR
        currently:
          type: string
          enum:
          - WAITING_FOR_UPDATE
          - LAST_UPDATE_FAILED
          example: WAITING_FOR_UPDATE
        errors:
          type: object
          properties:
            errors:
              type: array
              items:
                $ref: '#/components/schemas/Errors/properties/errors/items'
                x-miro: /builds/13667159605/api-premium-listings/docs/api/schemas/ServiceError.yaml
    Errors:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            description: 'The possible errors:

              * **1011003** - 101 premium listing api, severity level 1, code 003 create premium listing invalid request

              '
            properties:
              reason:
                type: string
                description: The human readable reason of failure
                example: JSON schema requirements not met
              code:
                type: integer
                description: Comprising of the service identifier, severity and custom error code
                example: 1011003
    Highlights:
      type: array
      items:
        type: object
        description: 'highlighted feature of a premium listing

          '
        properties:
          id:
            type: integer
          description:
            type: string
          key:
            type: string
        required:
        - id
    HighlightsRequest:
      type: array
      items:
        type: object
        description: 'highlighted feature of a premium listing

          '
        properties:
          id:
            type: integer
          description:
            type: string
        required:
        - id
    UpdateHighlights:
      type: object
      properties:
        highlights:
          $ref: '#/components/schemas/CreatePremiumListing/properties/highlights'
          x-miro: /builds/13667159605/api-premium-listings/docs/api/schemas/HighlightsRequest.yaml
      required:
      - highlights
    CreatePremiumListing:
      type: object
      properties:
        listingId:
          type: number
          description: an internal zoopla identifier for a given listing which determines which listing should be made premium.
        customerListingId:
          type: string
          example: 100219_CHS108334
          description: an customer identifier of listing id (it has to be provided during listing creation) Zoopla is aware of.
        highlights:
          type: array
          items:
            $ref: '#/components/schemas/HighlightsRequest/items'
            x-miro: /builds/13667159605/api-premium-listings/docs/api/schemas/HighlightRequest.yaml
        customDetails:
          type: object
          description: So customers can store additional information about a product activation - for example - CRM identifier or order number.
    PremiumListing:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        listingId:
          type: number
          example: 1234
          description: an internal zoopla identifier for a given listing which determines which listing should be made premium.
        createdAt:
          type: string
          format: date-time
          readOnly: true
        updatedAt:
          type: string
          format: date-time
          readOnly: true
        createdBy:
          type: string
          readOnly: true
          description: unique client identifier
        status:
          type: object
          description: 'Status of request with error response

            '
          properties:
            result:
              type: string
              enum:
              - PENDING
              - ACTIVATED
              - DEACTIVATED
              - SCHEDULED
              - ERROR
              example: ERROR
            currently:
              type: string
              enum:
              - WAITING_FOR_UPDATE
              - LAST_UPDATE_FAILED
              example: WAITING_FOR_UPDATE
            errors:
              $ref: '#/components/schemas/Status/properties/errors'
              x-miro: /builds/13667159605/api-premium-listings/docs/api/schemas/Errors.yaml
        expiryAt:
          type: string
          format: date-time
          description: ISO-8601 date when the premium listing stops being premium
          readOnly: true
        highlights:
          type: array
          items:
            $ref: '#/components/schemas/Highlights/items'
            x-miro: /builds/13667159605/api-premium-listings/docs/api/schemas/Highlight.yaml
        customDetails:
          type: object
          description: So customers can store additional information about a product activation - for example - CRM identifier or order number.
      required:
      - listingId
    PremiumListings:
      type: array
      items:
        type: object
        properties:
          id:
            type: string
            format: uuid
            readOnly: true
          listingId:
            type: number
            example: 1234
            description: an internal zoopla identifier for a given listing which determines which listing should be made premium.
          createdAt:
            type: string
            format: date-time
            readOnly: true
          updatedAt:
            type: string
            format: date-time
            readOnly: true
          createdBy:
            type: string
            readOnly: true
            description: unique client identifier
          status:
            $ref: '#/components/schemas/PremiumListing/properties/status'
            x-miro: /builds/13667159605/api-premium-listings/docs/api/schemas/Status.yaml
          expiryAt:
            type: string
            format: date-time
            description: ISO-8601 date when the premium listing stops being premium
            readOnly: true
          highlights:
            $ref: '#/components/schemas/PremiumListing/properties/highlights'
            x-miro: /builds/13667159605/api-premium-listings/docs/api/schemas/Highlights.yaml
          customDetails:
            type: object
            description: So customers can store additional information about a product activation - for example - CRM identifier or order number.
        required:
        - listingId
    Status_2:
      type: object
      description: 'Status of request with error response

        '
      properties:
        result:
          type: string
          enum:
          - PENDING
          - ACTIVATED
          - DEACTIVATED
          - SCHEDULED
          - ERROR
          example: ERROR
        errors:
          type: object
          properties:
            errors:
              type: array
              items:
                $ref: '#/components/schemas/Errors/properties/errors/items'
                x-miro: /builds/13634493756/api-weekly-featured-properties/docs/api/schemas/ServiceError.yaml
    WeeklyFeaturedProperty:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        listingId:
          type: number
          example: 1234
          description: an internal zoopla identifier for a given listing which determines which listing should be made a WFP.
        createdAt:
          type: string
          format: date-time
          readOnly: true
        updatedAt:
          type: string
          format: date-time
          readOnly: true
        createdBy:
          type: string
          readOnly: true
          description: unique client identifier
        startAt:
          type: string
          format: date-time
          description: ISO-8601 date when the listing begins being a WFP
        expiryAt:
          type: string
          format: date-time
          description: ISO-8601 date when the listing stops being a WFP
        isRenewable:
          type: boolean
          description: Can listing be renewed
          readOnly: true
        status:
          type: object
          description: 'Status of request with error response

            '
          properties:
            result:
              type: string
              enum:
              - PENDING
              - ACTIVATED
              - DEACTIVATED
              - SCHEDULED
              - ERROR
              example: ERROR
            errors:
              $ref: '#/components/schemas/Status/properties/errors'
              x-miro: /builds/13634493756/api-weekly-featured-properties/docs/api/schemas/Errors.yaml
        customDetails:
          type: object
          description: So customers can store additional information about a product activation - for example - CRM identifier or order number.
      required:
      - expiryAt
      - startAt
      - listingId
    Errors_2:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            description: 'The possible errors:

              * **2011003** - 201 WFP API, severity level 1, code 003 activate WFP invalid request

              '
            properties:
              reason:
                type: string
                description: The human readable reason of failure
                example: JSON schema requirements not met
              code:
                type: integer
                description: Comprising of the service identifier, severity and custom error code
                example: 2011003
    CreateWeeklyFeaturedProperty:
      type: object
      properties:
        listingId:
          type: number
          example: 1234
          description: An internal zoopla identifier for a given listing which determines which listing should be activated as a WFP.
        customerListingId:
          type: string
          example: 100219_CHS108334
          description: A customer identifier of listing id which Zoopla is aware of (it has to be provided during the listing creation).
        customDetails:
          type: object
          description: So customers can store additional information about a product activation - for example - CRM identifier or order number.
    WeeklyFeaturedProperties:
      type: array
      items:
        type: object
        properties:
          id:
            type: string
            format: uuid
            readOnly: true
          listingId:
            type: number
            example: 1234
            description: an internal zoopla identifier for a given listing which determines which listing should be made a WFP.
          createdAt:
            type: string
            format: date-time
            readOnly: true
          updatedAt:
            type: string
            format: date-time
            readOnly: true
          createdBy:
            type: string
            readOnly: true
            description: unique client identifier
          startAt:
            type: string
            format: date-time
            description: ISO-8601 date when the listing begins being a WFP
          expiryAt:
            type: string
            format: date-time
            description: ISO-8601 date when the listing stops being a WFP
          isRenewable:
            type: boolean
            description: Can listing be renewed
            readOnly: true
          status:
            $ref: '#/components/schemas/WeeklyFeaturedProperty/properties/status'
            x-miro: /builds/13634493756/api-weekly-featured-properties/docs/api/schemas/Status.yaml
          customDetails:
            type: object
            description: So customers can store additional information about a product activation - for example - CRM identifier or order number.
        required:
        - expiryAt
        - startAt
        - listingId
  securitySchemes:
    oAuthSample:
      type: oauth2
      description: This API uses OAuth 2 with the client credentials grant flow.
      flows:
        clientCredentials:
          tokenUrl: https://services-auth.services.zoopla.co.uk/oauth2/token
          scopes:
            api/api_access: access to the API
x-refined-from:
- zoopla-premium-listing-activations-openapi.json
- zoopla-weekly-featured-property-openapi.json