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 " 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