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/casafari:casafari-market-analytics-api-time-series-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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: 3.2.0
info:
title: Casafari market-analytics-api---time series API
description: 'The Casafari API provides clients with methods for manipulating alerts feeds, accounts, and consulting a reference
of available locations, features and conditions.
# Authentication methods
-->'
version: 0.1.0
servers:
- url: https://api.casafari.com
tags:
- name: market-analytics-api---time series
x-displayName: Time Series
paths:
/market-analytics-api/time-series:
post:
tags:
- market-analytics-api---time series
summary: Time Series
description: 'Returns time series data for the real estate market.
Each time series unit includes the interval start date based on the provided `date_interval` and a value corresponding to the selected `data_point`.'
operationId: market-analytics-api__post__time-series
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MarketAnalyticsApiTimeSeriesRequestSchema'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
items:
$ref: '#/components/schemas/MarketAnalyticsApiTimeSeriesUnitResponseSchema'
type: array
title: Response Time Series Time Series Post
'204':
description: No Content
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/MarketAnalyticsApiErrorResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/MarketAnalyticsApiHTTPValidationError'
security:
- HTTPBearer: []
- OAuth2ClientCredentials: []
components:
schemas:
MarketAnalyticsApiDataPointEnum:
type: string
enum:
- avg_price
- avg_price_psqm
- available_on_market
- new
- sold_or_rented
- price_up
- price_down
title: DataPointEnum
MarketAnalyticsApiErrorResponse:
properties:
message:
type: string
title: Message
errors:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Errors
details:
anyOf:
- type: string
- type: 'null'
title: Details
type: object
required:
- message
title: ErrorResponse
description: Represent error response schema.
MarketAnalyticsApiGeoPoint:
properties:
latitude:
type: number
maximum: 90.0
minimum: -90.0
title: Latitude
longitude:
type: number
maximum: 180.0
minimum: -180.0
title: Longitude
type: object
required:
- latitude
- longitude
title: GeoPoint
MarketAnalyticsApiTimeSeriesRequestSchema:
properties:
types:
items:
$ref: '#/components/schemas/MarketAnalyticsApiExternalEstateTypeEnum'
type: array
minItems: 1
title: Types
description: 'The list of property types by type groups:<br/><strong>apartment: </strong>["apartment", "studio", "duplex", "penthouse", "dachgeschosswohnung", "etagenwohnung", "erdgeschosswohnung"]<br/><strong>house: </strong>["country_house", "house", "palace", "townhouse", "villa", "country_estate", "chalet", "bungalow", "family_house", "reihenhaus", "reihenendhaus", "reihenmittelhaus", "einfamilienhaus", "zweifamilienhaus", "landwirtschaftliche_betriebe"]<br/><strong>room: </strong>["room"]<br/><strong>building: </strong>["apartment_building", "office_building", "mix_use_building"]<br/><strong>investment: </strong>["retail", "office", "industrial", "warehouse", "hotel", "building", "other_commercial", "restaurant", "werkstatt"]<br/><strong>development: </strong>["apartment_development", "house_development"]<br/><strong>plot: </strong>["urban_plot", "rural_plot"]<br/><strong>other: </strong>["parking", "garage", "other"]<br/><br/><i>Note that you can select multiple types only from one property type group.</i><br><br><span style="color:red">The list of property types specific to certain countries</span>:<br/><strong>apartment:</strong><br/>○ dachgeschosswohnung: <strong>Germany</strong><br/>○ etagenwohnung: <strong>Germany</strong><br/>○ erdgeschosswohnung: <strong>Germany</strong><br/><strong>house:</strong><br/>○ family_house: <strong>Germany</strong><br/>○ reihenhaus: <strong>Germany</strong><br/>○ reihenendhaus: <strong>Germany</strong><br/>○ reihenmittelhaus: <strong>Germany</strong><br/>○ einfamilienhaus: <strong>Germany</strong><br/>○ zweifamilienhaus: <strong>Germany</strong><br/>○ landwirtschaftliche_betriebe: <strong>Germany</strong><br/><strong>investment:</strong><br/>○ restaurant: <strong>Germany</strong><br/>○ werkstatt: <strong>Germany</strong><br/><strong>plot:</strong><br/>○ urban_plot: <strong>Italy, Germany, Portugal, Spain, France</strong><br/>○ rural_plot: <strong>Italy, Germany, Portugal, Spain, France</strong>'
business_type:
$ref: '#/components/schemas/MarketAnalyticsApiBusinessTypeEnum'
price_range:
anyOf:
- $ref: '#/components/schemas/MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__8'
- type: 'null'
price_per_sqm_range:
anyOf:
- $ref: '#/components/schemas/MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__9'
- type: 'null'
rooms_range:
anyOf:
- $ref: '#/components/schemas/MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__10'
- type: 'null'
bedrooms_range:
anyOf:
- $ref: '#/components/schemas/MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__11'
- type: 'null'
bathrooms_range:
anyOf:
- $ref: '#/components/schemas/MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__12'
- type: 'null'
total_area_range:
anyOf:
- $ref: '#/components/schemas/MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__13'
- type: 'null'
plot_area_range:
anyOf:
- $ref: '#/components/schemas/MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__14'
- type: 'null'
construction_year_range:
anyOf:
- $ref: '#/components/schemas/MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__15'
- type: 'null'
characteristics:
anyOf:
- $ref: '#/components/schemas/MarketAnalyticsApiCharacteristicsRequestSchema'
- type: 'null'
conditions:
items:
$ref: '#/components/schemas/MarketAnalyticsApiExternalConditionEnum'
type: array
minItems: 1
title: Conditions
description: Property conditions, as returned by the [GET /api/v1/references/conditions](/#operation/api__get__v1__references__conditions) endpoint.
private:
type: boolean
title: Private
description: Whether the property is listed by a private individual, as opposed to an agent or a professional.
bank:
type: boolean
title: Bank
description: Whether the property is owned by the bank.
auction:
type: boolean
title: Auction
description: Whether the property is the subject of an auction.
default: false
exclude_outliers:
type: boolean
title: Exclude Outliers
description: Exclude properties that are significantly underpriced or overpriced compared to similar properties.
default: false
custom_location_boundary:
$ref: '#/components/schemas/MarketAnalyticsApiLocationBoundarySchema'
data_point:
$ref: '#/components/schemas/MarketAnalyticsApiDataPointEnum'
description: Specifies the type of real estate data to retrieve for a given period.
date_interval:
$ref: '#/components/schemas/MarketAnalyticsApiDataPointIntervalEnum'
description: Defines the time interval for aggregating data points. Determines the frequency at which data is reported in the response.
date_range:
$ref: '#/components/schemas/MarketAnalyticsApiapi__schema__ranges__DateRangeSchema__2'
type: object
required:
- types
- business_type
- custom_location_boundary
- data_point
- date_interval
- date_range
title: TimeSeriesRequestSchema
MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__13:
properties:
min:
anyOf:
- type: integer
maximum: 1000000.0
minimum: 1.0
- type: 'null'
title: Min
max:
anyOf:
- type: integer
maximum: 1000000.0
minimum: 1.0
- type: 'null'
title: Max
type: object
title: IntRangeSchema
MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__10:
properties:
min:
anyOf:
- type: integer
maximum: 15000.0
minimum: 1.0
- type: 'null'
title: Min
max:
anyOf:
- type: integer
maximum: 15000.0
minimum: 1.0
- type: 'null'
title: Max
type: object
title: IntRangeSchema
MarketAnalyticsApiBusinessTypeEnum:
type: string
enum:
- sale
- rent
title: BusinessTypeEnum
MarketAnalyticsApiCharacteristicsRequestSchema:
properties:
must_have:
items:
$ref: '#/components/schemas/MarketAnalyticsApiExternalCharacteristicEnum'
type: array
title: Must Have
description: Include only properties that have all these characteristics.
exclude:
items:
$ref: '#/components/schemas/MarketAnalyticsApiExternalCharacteristicEnum'
type: array
title: Exclude
description: Exclude properties that contain any of these characteristics.
type: object
title: CharacteristicsRequestSchema
MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__11:
properties:
min:
anyOf:
- type: integer
maximum: 15000.0
minimum: 0.0
- type: 'null'
title: Min
max:
anyOf:
- type: integer
maximum: 15000.0
minimum: 0.0
- type: 'null'
title: Max
type: object
title: IntRangeSchema
MarketAnalyticsApiExternalCharacteristicEnum:
type: string
enum:
- balcony
- elevator
- no_elevator
- garage
- garden
- parking
- storage
- swimming_pool
- terrace
- rental_license
- furniture
- rented_out
- life_annuity
title: ExternalCharacteristicEnum
MarketAnalyticsApiValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__9:
properties:
min:
anyOf:
- type: integer
maximum: 2147483647.0
minimum: 1.0
- type: 'null'
title: Min
max:
anyOf:
- type: integer
maximum: 2147483647.0
minimum: 1.0
- type: 'null'
title: Max
type: object
title: IntRangeSchema
MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__12:
properties:
min:
anyOf:
- type: integer
maximum: 15000.0
minimum: 1.0
- type: 'null'
title: Min
max:
anyOf:
- type: integer
maximum: 15000.0
minimum: 1.0
- type: 'null'
title: Max
type: object
title: IntRangeSchema
MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__8:
properties:
min:
anyOf:
- type: integer
maximum: 2147483647.0
minimum: 1.0
- type: 'null'
title: Min
max:
anyOf:
- type: integer
maximum: 2147483647.0
minimum: 1.0
- type: 'null'
title: Max
type: object
title: IntRangeSchema
MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__14:
properties:
min:
anyOf:
- type: integer
maximum: 1000000.0
minimum: 1.0
- type: 'null'
title: Min
max:
anyOf:
- type: integer
maximum: 1000000.0
minimum: 1.0
- type: 'null'
title: Max
type: object
title: IntRangeSchema
MarketAnalyticsApiapi__schema__ranges__DateRangeSchema__2:
properties:
min:
anyOf:
- type: string
format: date
- type: 'null'
title: Min
description: Start date in the format `YYYY-MM-DD`. If the specified date is not Monday - the closest previous Monday will be selected.
max:
anyOf:
- type: string
format: date
- type: 'null'
title: Max
description: End date in the format `YYYY-MM-DD`. If the specified date is not Sunday - the closest previous Sunday will be selected.
type: object
required:
- min
title: DateRangeSchema
MarketAnalyticsApiHTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/MarketAnalyticsApiValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
MarketAnalyticsApiCircleBoundarySchema:
properties:
distance:
type: integer
maximum: 50000.0
minimum: 50.0
title: Distance
description: Maximum distance in meters from the requested `target_point` to the properties.
target_point:
$ref: '#/components/schemas/MarketAnalyticsApiGeoPoint'
description: Target point coordinates to search around.
type: object
required:
- distance
- target_point
title: CircleBoundarySchema
MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__15:
properties:
min:
anyOf:
- type: integer
maximum: 3000.0
minimum: 1.0
- type: 'null'
title: Min
max:
anyOf:
- type: integer
maximum: 3000.0
minimum: 1.0
- type: 'null'
title: Max
type: object
title: IntRangeSchema
MarketAnalyticsApiExternalConditionEnum:
type: string
enum:
- used
- ruin
- very-good
- new
- other
title: ExternalConditionEnum
MarketAnalyticsApiDataPointIntervalEnum:
type: string
enum:
- week
- month
- quarter
- year
title: DataPointIntervalEnum
MarketAnalyticsApiTimeSeriesUnitResponseSchema:
properties:
date_start:
type: string
format: date
title: Date Start
description: The starting date of the period associated with the passed `date_interval` field value. The format follows `YYYY-MM-DD`.
value:
anyOf:
- type: number
- type: 'null'
title: Value
description: The numerical value corresponding to the passed `data_point` field value for the given `date_start`.
type: object
required:
- date_start
- value
title: TimeSeriesUnitResponseSchema
MarketAnalyticsApiExternalEstateTypeEnum:
type: string
enum:
- apartment
- studio
- duplex
- penthouse
- dachgeschosswohnung
- etagenwohnung
- erdgeschosswohnung
- country_house
- house
- palace
- townhouse
- villa
- country_estate
- chalet
- bungalow
- family_house
- reihenhaus
- reihenendhaus
- reihenmittelhaus
- einfamilienhaus
- zweifamilienhaus
- landwirtschaftliche_betriebe
- retail
- office
- industrial
- warehouse
- hotel
- building
- other_commercial
- restaurant
- werkstatt
- urban_plot
- rural_plot
- room
- parking
- garage
- other
- apartment_building
- office_building
- mix_use_building
- apartment_development
- house_development
title: ExternalEstateTypeEnum
MarketAnalyticsApiLocationBoundarySchema:
properties:
location_ids:
items:
type: integer
maximum: 2147483647.0
minimum: 1.0
type: array
maxItems: 10
minItems: 1
title: Location Ids
description: List of location IDs.
polygon:
items:
$ref: '#/components/schemas/MarketAnalyticsApiGeoPoint'
type: array
minItems: 4
title: Polygon
description: List of geo-points to search within. Polygon must contain at least 4 points. First and last points must match.
circle:
$ref: '#/components/schemas/MarketAnalyticsApiCircleBoundarySchema'
description: Circle boundary to search within.
type: object
title: LocationBoundarySchema
securitySchemes:
HTTPBearer:
type: http
description: '
Sign in with your account: `POST /login` with your email and password returns an `access_token` and a
`refresh_token`. Send the access token as `Authorization: Bearer <access_token>`. When it expires, call
`GET /refresh-token` with `Authorization: Bearer <refresh_token>` for a new access token.
'
scheme: bearer
bearerFormat: JWT
OAuth2ClientCredentials:
type: oauth2
description: "**Recommended.** Create a client in Settings → API Clients and save its ID and secret. The secret is displayed only once, and the client can be used only in the environment where it was created.\n\nExchange the client ID and secret for an access token using HTTP Basic authentication:\n\n```bash\ncurl -X POST 'https://api.casafari.com/oauth/token' \\\n -u 'CLIENT_ID:CLIENT_SECRET' \\\n -d 'grant_type=client_credentials' \\\n -d 'scope=api'\n```\n\nThe access token is valid for 30 minutes. No refresh token is issued, so you must request a new access token when the current one expires.\n\nInclude the access token in API requests using the following header:\n\n```\nAuthorization: Bearer <token>\n```"
flows:
clientCredentials:
scopes:
api: Access to the CASAFARI REST API.
tokenUrl: https://api.casafari.com/oauth/token
x-tagGroups:
- name: User Management
tags:
- user-management---authentication
- name: API
tags:
- api---valuation
- api---alerts
- api---comparables
- api---references
- api---properties
- name: Market Analytics API
tags:
- market-analytics-api---time series
- market-analytics-api---distributions
- market-analytics-api---analysis
- name: Alerts API
tags:
- alerts-api---webhooks
- alerts-api---feeds