Bridge Offices API

Retrieve brokerage office (RESO Office) records for a dataset, including office name, address, and contact, filterable by location and other fields.

OpenAPI Specification

bridge-interactive-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Bridge API (Bridge Data Output)
  description: >-
    The Bridge API from Bridge Interactive (a Zillow Group company) provides
    normalized real-estate data access. It exposes a proprietary RESTful
    "Bridge Web API" (listings, agents, offices, open houses) and a
    RESO Data Dictionary-aligned "RESO Web API" (OData) for Property, Member,
    Office, OpenHouse, and Media resources. All requests are scoped to a
    dataset_id and authenticated with a Bearer server access token (also
    accepted as an access_token query parameter).
  termsOfService: https://www.bridgeinteractive.com/terms-of-use/
  contact:
    name: Bridge Interactive Support
    url: https://bridgedataoutput.com/docs/platform/
  version: 'v2'
servers:
  - url: https://api.bridgedataoutput.com/api/v2
    description: Bridge API v2 production
security:
  - bearerAuth: []
paths:
  /{dataset_id}/listings:
    get:
      operationId: getListings
      tags:
        - Listings
      summary: Query listings for a dataset
      description: >-
        Returns normalized listing/property records for the given dataset.
        Supports field selection, sorting, geo (near) search, pagination, and
        per-field filter operators such as ListPrice.gt or City.eq.
      parameters:
        - $ref: '#/components/parameters/datasetId'
        - $ref: '#/components/parameters/accessToken'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/fields'
        - $ref: '#/components/parameters/sortBy'
        - $ref: '#/components/parameters/order'
        - $ref: '#/components/parameters/near'
      responses:
        '200':
          description: A bundle of listing records.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Bundle'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /{dataset_id}/listings/{id}:
    get:
      operationId: getListing
      tags:
        - Listings
      summary: Get a single listing by id
      parameters:
        - $ref: '#/components/parameters/datasetId'
        - $ref: '#/components/parameters/resourceId'
        - $ref: '#/components/parameters/accessToken'
        - $ref: '#/components/parameters/fields'
      responses:
        '200':
          description: A single listing record.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SingleResource'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /{dataset_id}/agents:
    get:
      operationId: getAgents
      tags:
        - Agents
      summary: Query agents (members) for a dataset
      description: >-
        Returns agent/member records. Supports filtering (e.g. firstName.ne),
        field selection, sorting, and pagination.
      parameters:
        - $ref: '#/components/parameters/datasetId'
        - $ref: '#/components/parameters/accessToken'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/fields'
        - $ref: '#/components/parameters/sortBy'
        - $ref: '#/components/parameters/order'
      responses:
        '200':
          description: A bundle of agent records.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Bundle'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /{dataset_id}/agents/{id}:
    get:
      operationId: getAgent
      tags:
        - Agents
      summary: Get a single agent by id
      parameters:
        - $ref: '#/components/parameters/datasetId'
        - $ref: '#/components/parameters/resourceId'
        - $ref: '#/components/parameters/accessToken'
        - $ref: '#/components/parameters/fields'
      responses:
        '200':
          description: A single agent record.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SingleResource'
  /{dataset_id}/offices:
    get:
      operationId: getOffices
      tags:
        - Offices
      summary: Query offices for a dataset
      description: >-
        Returns brokerage office records. Supports filtering (e.g. state=VT),
        field selection, sorting, and pagination.
      parameters:
        - $ref: '#/components/parameters/datasetId'
        - $ref: '#/components/parameters/accessToken'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/fields'
        - $ref: '#/components/parameters/sortBy'
        - $ref: '#/components/parameters/order'
      responses:
        '200':
          description: A bundle of office records.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Bundle'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /{dataset_id}/offices/{id}:
    get:
      operationId: getOffice
      tags:
        - Offices
      summary: Get a single office by id
      parameters:
        - $ref: '#/components/parameters/datasetId'
        - $ref: '#/components/parameters/resourceId'
        - $ref: '#/components/parameters/accessToken'
        - $ref: '#/components/parameters/fields'
      responses:
        '200':
          description: A single office record.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SingleResource'
  /{dataset_id}/openhouses:
    get:
      operationId: getOpenHouses
      tags:
        - Open Houses
      summary: Query open houses for a dataset
      description: >-
        Returns scheduled open house records, including date and time window
        and the associated listing. Supports filtering, field selection,
        sorting, and pagination.
      parameters:
        - $ref: '#/components/parameters/datasetId'
        - $ref: '#/components/parameters/accessToken'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/fields'
        - $ref: '#/components/parameters/sortBy'
        - $ref: '#/components/parameters/order'
      responses:
        '200':
          description: A bundle of open house records.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Bundle'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /OData/{dataset_id}/$metadata:
    get:
      operationId: getResoMetadata
      tags:
        - RESO Web API
      summary: RESO Web API metadata document
      description: >-
        Returns the RESO Web API (OData) metadata document describing the
        available resources and fields for the dataset.
      parameters:
        - $ref: '#/components/parameters/datasetId'
        - $ref: '#/components/parameters/accessToken'
      responses:
        '200':
          description: OData $metadata (XML or JSON).
  /OData/{dataset_id}/Property:
    get:
      operationId: getResoProperty
      tags:
        - RESO Web API
      summary: RESO Property collection (OData)
      description: >-
        Returns RESO Data Dictionary Property records. Supports $filter,
        $select, $top, $skip, $orderby, and $expand (e.g. Media, Member,
        Office). Feed types such as /idx may be appended in the path.
      parameters:
        - $ref: '#/components/parameters/datasetId'
        - $ref: '#/components/parameters/accessToken'
        - $ref: '#/components/parameters/odataFilter'
        - $ref: '#/components/parameters/odataSelect'
        - $ref: '#/components/parameters/odataTop'
        - $ref: '#/components/parameters/odataSkip'
        - $ref: '#/components/parameters/odataOrderby'
        - $ref: '#/components/parameters/odataExpand'
      responses:
        '200':
          description: An OData collection of Property entities.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ODataCollection'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /OData/{dataset_id}/Property/replication:
    get:
      operationId: getResoPropertyReplication
      tags:
        - RESO Web API
      summary: RESO Property replication endpoint
      description: >-
        Replication endpoint used to extract more than 10,000 Property records
        for full dataset synchronization.
      parameters:
        - $ref: '#/components/parameters/datasetId'
        - $ref: '#/components/parameters/accessToken'
        - $ref: '#/components/parameters/odataFilter'
        - $ref: '#/components/parameters/odataSelect'
      responses:
        '200':
          description: An OData collection of Property entities for replication.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ODataCollection'
  /OData/{dataset_id}/Member:
    get:
      operationId: getResoMember
      tags:
        - RESO Web API
      summary: RESO Member collection (OData)
      parameters:
        - $ref: '#/components/parameters/datasetId'
        - $ref: '#/components/parameters/accessToken'
        - $ref: '#/components/parameters/odataFilter'
        - $ref: '#/components/parameters/odataSelect'
        - $ref: '#/components/parameters/odataTop'
        - $ref: '#/components/parameters/odataSkip'
        - $ref: '#/components/parameters/odataOrderby'
      responses:
        '200':
          description: An OData collection of Member entities.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ODataCollection'
  /OData/{dataset_id}/Office:
    get:
      operationId: getResoOffice
      tags:
        - RESO Web API
      summary: RESO Office collection (OData)
      parameters:
        - $ref: '#/components/parameters/datasetId'
        - $ref: '#/components/parameters/accessToken'
        - $ref: '#/components/parameters/odataFilter'
        - $ref: '#/components/parameters/odataSelect'
        - $ref: '#/components/parameters/odataTop'
        - $ref: '#/components/parameters/odataSkip'
        - $ref: '#/components/parameters/odataOrderby'
      responses:
        '200':
          description: An OData collection of Office entities.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ODataCollection'
  /OData/{dataset_id}/OpenHouse:
    get:
      operationId: getResoOpenHouse
      tags:
        - RESO Web API
      summary: RESO OpenHouse collection (OData)
      parameters:
        - $ref: '#/components/parameters/datasetId'
        - $ref: '#/components/parameters/accessToken'
        - $ref: '#/components/parameters/odataFilter'
        - $ref: '#/components/parameters/odataSelect'
        - $ref: '#/components/parameters/odataTop'
        - $ref: '#/components/parameters/odataSkip'
        - $ref: '#/components/parameters/odataOrderby'
      responses:
        '200':
          description: An OData collection of OpenHouse entities.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ODataCollection'
  /OData/{dataset_id}/Media:
    get:
      operationId: getResoMedia
      tags:
        - RESO Web API
      summary: RESO Media collection (OData)
      parameters:
        - $ref: '#/components/parameters/datasetId'
        - $ref: '#/components/parameters/accessToken'
        - $ref: '#/components/parameters/odataFilter'
        - $ref: '#/components/parameters/odataSelect'
        - $ref: '#/components/parameters/odataTop'
        - $ref: '#/components/parameters/odataSkip'
        - $ref: '#/components/parameters/odataOrderby'
      responses:
        '200':
          description: An OData collection of Media entities.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ODataCollection'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Server access token issued from the Bridge Dashboard under
        Data Access > API Access Tokens. Sent as
        "Authorization: Bearer <token>" or as an access_token query parameter.
  parameters:
    datasetId:
      name: dataset_id
      in: path
      required: true
      description: The dataset identifier the request is scoped to.
      schema:
        type: string
    resourceId:
      name: id
      in: path
      required: true
      description: The unique identifier of a single resource record.
      schema:
        type: string
    accessToken:
      name: access_token
      in: query
      required: false
      description: >-
        Bridge access token. Optional when an Authorization Bearer header is
        supplied.
      schema:
        type: string
    limit:
      name: limit
      in: query
      required: false
      description: Maximum number of records to return per page.
      schema:
        type: integer
        default: 10
    offset:
      name: offset
      in: query
      required: false
      description: Number of records to skip for pagination.
      schema:
        type: integer
    fields:
      name: fields
      in: query
      required: false
      description: Comma-separated list of fields to include in each record.
      schema:
        type: string
    sortBy:
      name: sortBy
      in: query
      required: false
      description: Field name to sort results by.
      schema:
        type: string
    order:
      name: order
      in: query
      required: false
      description: Sort order.
      schema:
        type: string
        enum:
          - asc
          - desc
    near:
      name: near
      in: query
      required: false
      description: >-
        Geographic point as "longitude,latitude" used for radius/near search.
      schema:
        type: string
    odataFilter:
      name: $filter
      in: query
      required: false
      description: OData filter expression (e.g. ListPrice gt 500000). Names are case sensitive.
      schema:
        type: string
    odataSelect:
      name: $select
      in: query
      required: false
      description: Comma-separated OData field selection.
      schema:
        type: string
    odataTop:
      name: $top
      in: query
      required: false
      description: OData page size (v2) / collection size (v3).
      schema:
        type: integer
    odataSkip:
      name: $skip
      in: query
      required: false
      description: OData number of records to skip.
      schema:
        type: integer
    odataOrderby:
      name: $orderby
      in: query
      required: false
      description: OData ordering expression (e.g. ListPrice desc).
      schema:
        type: string
    odataExpand:
      name: $expand
      in: query
      required: false
      description: OData related resources to embed (e.g. Media, Member, Office).
      schema:
        type: string
  responses:
    Unauthorized:
      description: Missing or invalid access token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    TooManyRequests:
      description: Rate limit exceeded.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Bundle:
      type: object
      description: Bridge Web API response envelope for a collection of records.
      properties:
        success:
          type: boolean
        status:
          type: integer
        bundle:
          type: array
          items:
            type: object
            additionalProperties: true
        total:
          type: integer
    SingleResource:
      type: object
      description: Bridge Web API response envelope for a single record.
      properties:
        success:
          type: boolean
        status:
          type: integer
        bundle:
          type: object
          additionalProperties: true
    ODataCollection:
      type: object
      description: OData collection response for RESO Web API resources.
      properties:
        '@odata.context':
          type: string
        '@odata.nextLink':
          type: string
        value:
          type: array
          items:
            type: object
            additionalProperties: true
    Error:
      type: object
      properties:
        success:
          type: boolean
        status:
          type: integer
        message:
          type: string