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.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/perchwell-office-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
openapi: 3.2.0
info:
title: Perchwell RESO Web Office API
version: v2
description: Perchwell's RESO Web API is a RESO Data Dictionary certified, OData 4.01 interface for transferring real estate data.
contact:
name: Perchwell Support
email: support@perchwell.com
url: https://docs.perchwell.com
servers:
- url: https://www.perchwell.com/api/v2/OData/{system}
description: Production (system is the originating system identifier)
variables:
system:
default: system
description: The originating system identifier for the MLS/dataset.
security:
- bearerAuth: []
tags:
- name: Office
description: RESO Office resource.
paths:
/Office:
get:
operationId: queryOffice
summary: Query Office records
tags:
- Office
parameters:
- $ref: '#/components/parameters/filter'
- $ref: '#/components/parameters/top'
- $ref: '#/components/parameters/skip'
- $ref: '#/components/parameters/select'
responses:
'200':
description: A collection of Office records.
content:
application/json:
schema:
$ref: '#/components/schemas/OfficeCollection'
/Office('{id}'):
get:
operationId: getOffice
summary: Get an Office by OfficeKey
tags:
- Office
parameters:
- $ref: '#/components/parameters/id'
responses:
'200':
description: The Office record.
content:
application/json:
schema:
$ref: '#/components/schemas/Office'
components:
parameters:
select:
name: $select
in: query
required: false
description: Comma-separated list of resource elements to return.
schema:
type: string
filter:
name: $filter
in: query
required: false
description: OData filter expression restricting returned items.
schema:
type: string
id:
name: id
in: path
required: true
description: The resource primary key value.
schema:
type: string
skip:
name: $skip
in: query
required: false
description: Number of matching items to skip (default 0).
schema:
type: integer
default: 0
top:
name: $top
in: query
required: false
description: Maximum number of matching items to return (default 10, max 200).
schema:
type: integer
default: 10
maximum: 200
schemas:
Office:
type: object
description: RESO Office resource.
properties:
OfficeKey:
type: string
OfficeName:
type: string
ModificationTimestamp:
type: string
format: date-time
OfficeCollection:
type: object
properties:
'@odata.context':
type: string
'@odata.count':
type: integer
value:
type: array
items:
$ref: '#/components/schemas/Office'
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: Simple token authentication via the Authorization Bearer header.