mlsgrid Property API

Property listings (RESO Data Dictionary Property resource).

Operations 2

GET /Property List Properties #
GET /Property('{ListingKey}') Get Property by Key #

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/mlsgrid-property-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

mlsgrid-property-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: MLS Grid RESO Web Lookup Property API
  description: 'The MLS Grid RESO Web API is a normalized, RESO Data Dictionary–compliant OData v4 Web API for replicating

    Multiple Listing Service (MLS) data across the dozens of participating boards on the MLS Grid network. The

    API is optimized for incremental replication using `ModificationTimestamp`, supports `$select`, `$filter`,

    and `$expand` for related resources (Media, Rooms, UnitTypes), and applies a single license agreement across

    all participating MLSs.


    Authentication uses long-lived OAuth 2.0 bearer tokens issued through the MLS Grid web application.

    '
  version: 2.0.0
  contact:
    name: MLS Grid Support
    email: support@mlsgrid.com
    url: https://www.mlsgrid.com
  license:
    name: MLS Grid Master Data License Agreement
    url: https://www.mlsgrid.com
  x-logo:
    url: https://www.mlsgrid.com
servers:
- url: https://api.mlsgrid.com/v2
  description: MLS Grid Web API v2 (production)
security:
- bearerAuth: []
tags:
- name: Property
  description: Property listings (RESO Data Dictionary Property resource).
paths:
  /Property:
    get:
      tags:
      - Property
      summary: List Properties
      description: Replicate Property listings filtered by `OriginatingSystemName` and `ModificationTimestamp`. Use `$expand=Media,Rooms,UnitTypes` to include nested resources and `@odata.nextLink` for pagination.
      operationId: listProperties
      parameters:
      - $ref: '#/components/parameters/Filter'
      - $ref: '#/components/parameters/Select'
      - $ref: '#/components/parameters/Expand'
      - $ref: '#/components/parameters/Top'
      - $ref: '#/components/parameters/Count'
      responses:
        '200':
          description: Collection of Property records.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PropertyCollection'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
  /Property('{ListingKey}'):
    get:
      tags:
      - Property
      summary: Get Property by Key
      description: Retrieve a single Property record by its prefixed `ListingKey` (e.g. `actris-1234567`).
      operationId: getProperty
      parameters:
      - name: ListingKey
        in: path
        required: true
        schema:
          type: string
        description: Prefixed MLS Grid listing key.
      - $ref: '#/components/parameters/Expand'
      responses:
        '200':
          description: A single Property record.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Property'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: Property not found.
components:
  schemas:
    PropertyCollection:
      type: object
      properties:
        '@odata.context':
          type: string
        '@odata.nextLink':
          type: string
        value:
          type: array
          items:
            $ref: '#/components/schemas/Property'
    Room:
      type: object
      properties:
        RoomKey:
          type: string
        RoomType:
          type: string
        RoomLevel:
          type: string
        RoomLength:
          type: number
        RoomWidth:
          type: number
    Property:
      type: object
      description: RESO Data Dictionary Property resource. Only fields present in the originating MLS are populated.
      properties:
        ListingKey:
          type: string
          description: Prefixed MLS Grid listing key (e.g. `actris-1234567`).
        OriginatingSystemName:
          type: string
          description: Source MLS identifier (e.g. `actris`, `mred`, `nwmls`).
        StandardStatus:
          type: string
          description: RESO StandardStatus enumeration.
          enum:
          - Active
          - ActiveUnderContract
          - Pending
          - Hold
          - Withdrawn
          - Expired
          - Closed
          - Canceled
          - ComingSoon
          - Delete
          - Incomplete
        PropertyType:
          type: string
          description: RESO PropertyType enumeration.
          enum:
          - Residential
          - ResidentialIncome
          - ResidentialLease
          - CommercialSale
          - CommercialLease
          - BusinessOpportunity
          - Farm
          - Land
          - ManufacturedInPark
        ListPrice:
          type: number
        ModificationTimestamp:
          type: string
          format: date-time
        PhotosChangeTimestamp:
          type: string
          format: date-time
        MlgCanView:
          type: boolean
          description: Indicates whether the listing may currently be viewed under license terms.
        MlgCanUse:
          type: array
          description: Allowed use cases for the listing (e.g. `IDX`, `VOW`, `BO`, `PT`).
          items:
            type: string
        Media:
          type: array
          items:
            $ref: '#/components/schemas/Media'
        Rooms:
          type: array
          items:
            $ref: '#/components/schemas/Room'
        UnitTypes:
          type: array
          items:
            $ref: '#/components/schemas/UnitType'
    UnitType:
      type: object
      properties:
        UnitTypeKey:
          type: string
        UnitTypeType:
          type: string
        UnitTypeBedsTotal:
          type: integer
        UnitTypeBathsTotal:
          type: number
    Media:
      type: object
      properties:
        MediaKey:
          type: string
        ResourceRecordKey:
          type: string
          description: Foreign key back to Property (or other resource).
        OriginatingSystemName:
          type: string
        MediaURL:
          type: string
          description: URL for downloading a local copy. Direct hot-linking is not permitted.
        MediaCategory:
          type: string
        Order:
          type: integer
        MediaModificationTimestamp:
          type: string
          format: date-time
  responses:
    RateLimited:
      description: Rate limit exceeded. The MLS Grid Web API enforces 2 RPS, 7,200 requests/hour, 40,000 requests/24h, and 4 GB/hour download caps. Repeated violations may suspend the token.
      headers:
        Retry-After:
          schema:
            type: integer
          description: Seconds until the client may retry.
    Unauthorized:
      description: Missing or invalid bearer token.
  parameters:
    Count:
      name: $count
      in: query
      description: When `true`, includes `@odata.count` in the response.
      schema:
        type: boolean
    Expand:
      name: $expand
      in: query
      description: Comma-separated list of related resources to expand inline. Common values for Property are `Media`, `Rooms`, and `UnitTypes`.
      schema:
        type: string
      example: Media,Rooms,UnitTypes
    Filter:
      name: $filter
      in: query
      description: 'OData `$filter` expression. Required pattern uses `OriginatingSystemName eq ''<system>''` combined with

        `ModificationTimestamp gt <UTC datetime>` for incremental replication. Replication queries are

        restricted to a limited set of searchable fields documented per resource.

        '
      schema:
        type: string
      example: OriginatingSystemName eq 'actris' and ModificationTimestamp gt 2026-01-01T00:00:00Z
    Select:
      name: $select
      in: query
      description: Comma-separated list of fields to return. Reduces payload size.
      schema:
        type: string
      example: ListingKey,StandardStatus,ListPrice,ModificationTimestamp
    Top:
      name: $top
      in: query
      description: Maximum number of records to return per page.
      schema:
        type: integer
        maximum: 1000
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: OAuth2
      description: Long-lived OAuth 2.0 bearer token issued via the MLS Grid web application token tab.