Perchwell Listings API

Real estate sale and rental listing feed.

OpenAPI Specification

perchwell-listings-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Perchwell JSON Listings API
  version: '1.0'
  description: Perchwell's JSON API provides access to real estate listing data in a format designed for ease of use and speed of development. The API uses simple token authentication and a basic query interface for filtering listings and paginating through results. Faithfully generated by the API Evangelist enrichment pipeline from Perchwell's published API reference (https://docs.perchwell.com/#/json_api_getting_started).
  contact:
    name: Perchwell Support
    email: support@perchwell.com
    url: https://docs.perchwell.com
servers:
- url: https://www.perchwell.com
  description: Production
security:
- tokenAuth: []
tags:
- name: Listings
  description: Real estate sale and rental listing feed.
paths:
  /api/feeds/{account_name}:
    get:
      operationId: listListings
      summary: List listings for an account feed
      description: Returns listings for the given account feed, filtered by listing type, status, and modification window, with page-based pagination. The response includes a total count and an array of Listing objects.
      tags:
      - Listings
      parameters:
      - name: account_name
        in: path
        required: true
        description: The account name identifying the feed.
        schema:
          type: string
      - name: listing_type
        in: query
        required: false
        description: Restricts returned listings to sale and/or rental listings.
        schema:
          type: string
          default: sales,rentals
          example: sales,rentals
      - name: listing_status
        in: query
        required: false
        description: 'Filters listings by conventional listing statuses (comma-separated): active, in_contract, temp_off_market, perm_off_market, closed, expired, future, lead.'
        schema:
          type: string
          default: active,in_contract,expired,closed,perm_off_market,temp_off_market
      - name: updated_since
        in: query
        required: false
        description: Excludes listings whose updated_at is less than this ISO 8601 value.
        schema:
          type: string
          example: '2015-01-01T10:00:00.000-04:00'
      - name: updated_before
        in: query
        required: false
        description: Excludes listings whose updated_at is greater than this ISO 8601 value.
        schema:
          type: string
          example: '2015-01-01T10:00:00.000-04:00'
      - name: page_size
        in: query
        required: false
        description: Maximum number of listing records returned per response (0-200).
        schema:
          type: integer
          minimum: 0
          maximum: 200
          default: 200
      - name: page
        in: query
        required: false
        description: Page offset for pagination (positive integers).
        schema:
          type: integer
          minimum: 1
          default: 1
      responses:
        '200':
          description: A page of matching listings.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListingsResponse'
              example:
                total: 184
                listings:
                - id: 12345
                  location:
                    address: 123 West 45th Street
                    city: New York
                    state: NY
                    zip: '10036'
                    place: Theater District
                    coordinates:
                    - 41.759818
                    - -74.989439
        '401':
          description: Missing or invalid authentication token.
components:
  schemas:
    Location:
      type: object
      properties:
        address:
          type: string
        address_with_unit:
          type: string
        city:
          type: string
        state:
          type: string
        zip:
          type: string
        place:
          type: string
        coordinates:
          type: array
          items:
            type: number
    ListingsResponse:
      type: object
      properties:
        total:
          type: integer
          description: Total number of records matching the filters, ignoring page_size.
        listings:
          type: array
          items:
            $ref: '#/components/schemas/Listing'
    Agent:
      type: object
      properties:
        first_name:
          type: string
        last_name:
          type: string
        email:
          type: string
        cell_phone:
          type: string
    Listing:
      type: object
      description: A Perchwell listing with nested detail objects.
      properties:
        id:
          type: integer
        location:
          $ref: '#/components/schemas/Location'
        agents:
          type: array
          items:
            $ref: '#/components/schemas/Agent'
        open_houses:
          type: array
          items:
            type: object
        media:
          type: array
          items:
            type: object
        listing_details:
          type: object
        rental_details:
          type: object
        unit_details:
          type: object
        unit_amenities:
          type: object
        building_details:
          type: object
        building_amenities:
          type: object
        features:
          type: object
        views_and_exposures:
          type: object
        policies:
          type: object
  securitySchemes:
    tokenAuth:
      type: apiKey
      in: header
      name: Authorization
      description: Simple token authentication. Send the API token in the Authorization header.