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-analysis-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 Analysis 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---analysis
x-displayName: Analysis
paths:
/market-analytics-api/analysis:
post:
tags:
- market-analytics-api---analysis
summary: Analysis
description: Market analysis based on the requested property parameters.
operationId: market-analytics-api__post__analysis
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MarketAnalyticsApiAnalysisRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/MarketAnalyticsApiAnalysisResponse'
title: Response Analysis Analysis Post
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/MarketAnalyticsApiErrorResponse'
'404':
description: Not Found
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:
MarketAnalyticsApiPriceEvolution:
properties:
avg_price:
$ref: '#/components/schemas/MarketAnalyticsApiStatisticsByMonths'
avg_price_per_sqm:
$ref: '#/components/schemas/MarketAnalyticsApiStatisticsByMonths'
type: object
required:
- avg_price
- avg_price_per_sqm
title: PriceEvolution
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.
MarketAnalyticsApiAnalysisRequest:
properties:
custom_location_boundary:
$ref: '#/components/schemas/MarketAnalyticsApiLocationBoundarySchema'
business_type:
$ref: '#/components/schemas/MarketAnalyticsApiBusinessTypeEnum'
description: Operation type for which the property is available.
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>'
conditions:
anyOf:
- items:
$ref: '#/components/schemas/MarketAnalyticsApiExternalConditionEnum'
type: array
minItems: 1
- type: 'null'
title: Conditions
description: Property conditions, as returned by the [GET /api/v1/references/conditions](/#operation/api__get__v1__references__conditions) endpoint.
energy_ratings:
anyOf:
- items:
$ref: '#/components/schemas/MarketAnalyticsApiExternalEnergyRatingEnum'
type: array
minItems: 1
- type: 'null'
title: Energy Ratings
description: List of energy ratings that attests to the energy efficiency of the property.
orientations:
anyOf:
- items:
$ref: '#/components/schemas/MarketAnalyticsApiExternalOrientationEnum'
type: array
minItems: 1
- type: 'null'
title: Orientations
description: Property view orientation.
views:
anyOf:
- items:
$ref: '#/components/schemas/MarketAnalyticsApiExternalViewEnum'
type: array
minItems: 1
- type: 'null'
title: Views
description: List of views from the property.
directions:
anyOf:
- items:
$ref: '#/components/schemas/MarketAnalyticsApiExternalDirectionEnum'
type: array
minItems: 1
- type: 'null'
title: Directions
description: List of cardinal directions the property faces.
floors:
anyOf:
- items:
$ref: '#/components/schemas/MarketAnalyticsApiExternalFloorEnum'
type: array
minItems: 1
- type: 'null'
title: Floors
description: List of floor types.
price_range:
anyOf:
- $ref: '#/components/schemas/MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__1'
- type: 'null'
rooms_range:
anyOf:
- $ref: '#/components/schemas/MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__2'
- type: 'null'
bedrooms_range:
anyOf:
- $ref: '#/components/schemas/MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__3'
- type: 'null'
bathrooms_range:
anyOf:
- $ref: '#/components/schemas/MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__4'
- type: 'null'
total_area_range:
anyOf:
- $ref: '#/components/schemas/MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__5'
- type: 'null'
plot_area_range:
anyOf:
- $ref: '#/components/schemas/MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__6'
- type: 'null'
construction_year_range:
anyOf:
- $ref: '#/components/schemas/MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__7'
- type: 'null'
characteristics:
anyOf:
- $ref: '#/components/schemas/MarketAnalyticsApiCharacteristicsRequestSchema'
- type: 'null'
type: object
required:
- custom_location_boundary
- business_type
- types
title: AnalysisRequest
MarketAnalyticsApiPriceStatistics:
properties:
average_price:
type: integer
title: Average Price
average_price_per_sqm:
type: integer
title: Average Price Per Sqm
type: object
required:
- average_price
- average_price_per_sqm
title: PriceStatistics
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
MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__7:
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
MarketAnalyticsApiPriceEstimation:
properties:
fast_market_price:
type: integer
title: Fast Market Price
out_of_market_price:
type: integer
title: Out Of Market Price
type: object
required:
- fast_market_price
- out_of_market_price
title: PriceEstimation
MarketAnalyticsApiBusinessTypeEnum:
type: string
enum:
- sale
- rent
title: BusinessTypeEnum
MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__2:
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__3:
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
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
MarketAnalyticsApiExternalFloorEnum:
type: string
enum:
- no_floor
- ground
- middle
- top
title: ExternalFloorEnum
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__1:
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
MarketAnalyticsApiAnalysisResponse:
properties:
price_statistics:
$ref: '#/components/schemas/MarketAnalyticsApiPriceStatistics'
description: Statistics including the average price and average price per square meter for properties matching the requested filters.
price_estimation:
$ref: '#/components/schemas/MarketAnalyticsApiPriceEstimation'
description: Provides estimated prices, including a quick sale price `fast_market_price` and an inflated price `out_of_market_price`.
price_evolution:
$ref: '#/components/schemas/MarketAnalyticsApiPriceEvolution'
description: Represents time series data showing how average prices and prices per square meter have changed over time for inactive properties.
summary_price_evolution:
$ref: '#/components/schemas/MarketAnalyticsApiPriceEvolution'
description: Represents time series data showing how average prices and prices per square meter have changed over time for both active and inactive properties.
average_days_on_the_market:
type: integer
title: Average Days On The Market
description: Indicates the average number of days properties remain listed on the market before being sold or removed.
type: object
required:
- price_statistics
- price_estimation
- price_evolution
- summary_price_evolution
- average_days_on_the_market
title: AnalysisResponse
MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__4:
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
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
MarketAnalyticsApiExternalViewEnum:
type: string
enum:
- water
- landscape
- city
- golf
- park
title: ExternalViewEnum
MarketAnalyticsApiExternalDirectionEnum:
type: string
enum:
- north
- south
- east
- west
title: ExternalDirectionEnum
MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__5:
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
MarketAnalyticsApiExternalConditionEnum:
type: string
enum:
- used
- ruin
- very-good
- new
- other
title: ExternalConditionEnum
MarketAnalyticsApiapi__schema__ranges__IntRangeSchema__6:
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
MarketAnalyticsApiExternalOrientationEnum:
type: string
enum:
- exterior
- interior
title: ExternalOrientationEnum
MarketAnalyticsApiExternalEnergyRatingEnum:
type: string
enum:
- Unknown
- A+
- A
- B
- C
- D
- E
- F
- G
- H
title: ExternalEnergyRatingEnum
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
MarketAnalyticsApiStatisticsByMonths:
properties:
for_the_last_1_month:
type: integer
title: For The Last 1 Month
for_the_last_3_month:
type: integer
title: For The Last 3 Month
for_the_last_6_month:
type: integer
title: For The Last 6 Month
for_the_last_9_month:
type: integer
title: For The Last 9 Month
for_the_last_12_month:
type: integer
title: For The Last 12 Month
type: object
required:
- for_the_last_1_month
- for_the_last_3_month
- for_the_last_6_month
- for_the_last_9_month
- for_the_last_12_month
title: StatisticsByMonths
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