REST API
The same data as the MCP tools, over HTTP. This reference is generated from the API's public OpenAPI description (OpenAPI 3.1.0, API version 0.1.0): 35 paths and 39 operations, snapshot taken 2026-10-08. Operations are grouped by product, the same way the MCP tools are; MCP and REST compared shows where the two overlap and where they do not.
Base URL and authentication
| Base URL | https://api.casafari.com |
| Format | JSON requests and responses |
| Authentication | A bearer token (JWT) that you get with your account's email and password. REST does not use OAuth; that is for MCP. |
| OpenAPI description | https://docs.api.casafari.com/openapi.json (public, no sign-in needed) |
| Interactive docs | https://docs.api.casafari.com/ |
The API description says about the token:
The API endpoints require an authentication token to be provided with each request. The token must be sent via the
AuthorizationHTTP header, containing the keywordBearerfollowed by your authentication token.
The public description lists the base catalogue. What your account can call depends on its subscription, and the interactive docs show your account's own list after you sign in. For agents, auth.md covers both ways of signing in.
Get a token
- Call
POST /loginwith your account's email and password. The response has anaccess_tokenand arefresh_token. - Send
Authorization: Bearer <access_token>with every other request. - When the access token expires, call
GET /refresh-tokenwith the refresh token as the bearer. A401from it means the refresh token has expired: log in again.
curl -X POST "https://api.casafari.com/login" \
-H "Content-Type: application/json" \
-d '{
"email": "<email>",
"password": "<password>"
}'Then, with the token in an environment variable ($CASAFARI_TOKEN in every example on this site is a placeholder, never a credential):
curl "https://api.casafari.com/api/v1/references/types" \
-H "Authorization: Bearer $CASAFARI_TOKEN"Operations by product
Properties
POST /api/v1/properties/match-by-listings: Get property by listing IDs (v1). Returns a mapping properties IDs to listing IDs.POST /api/v1/properties/search: Search properties (v1)GET /api/v1/properties/search/{property_id}: Get property by ID (v1). Returns a property object.POST /api/v1/properties/smart-links: Create a smart link (BETA) (v1). Generates a smart link that provides detailed property information with customizable components, branding, and user/company information overrides.POST /api/v2/properties/search: Search properties (v2)
Comparables & Valuation
POST /api/v1/comparables/search: Search comparables (v1). Returns comparable properties by the given parameters.POST /api/v2/comparables/ai-builder: Initialize an AI Builder session (v2). Initializes an AI Builder session from a saved CMA (valuation) and returns the generated report ID along with the URL of the AI Builder session.POST /api/v2/comparables/search: Search comparables (v2). Returns comparable properties by the given parameters.POST /api/v1/valuation/comparables-prices: Search estimated prices (v1). Returns estimated prices by the given parameters.
Area Insights
POST /market-analytics-api/time-series: Time Series. Returns time series data for the real estate market.POST /market-analytics-api/distributions/bedrooms: Bedrooms Distribution. Returns property distribution based on the number of bedrooms.POST /market-analytics-api/distributions/prices: Price Distribution. Returns the number of properties distributed across price ranges.POST /market-analytics-api/distributions/properties: Properties Distribution. Returns the properties lightweight data sample and distribution quartiles.POST /market-analytics-api/distributions/time-on-market: Time On Market Distribution. Returns time on market (days and months) distribution by price ranges.POST /market-analytics-api/analysis: Analysis. Market analysis based on the requested property parameters.
Alerts
GET /api/v1/listing-alerts/feeds: Get feeds list (v1). Returns all alerts feeds for currently authenticated user.POST /api/v1/listing-alerts/feeds: Create feed (v1). Create alerts feed for currently authenticated user.GET /api/v1/listing-alerts/feeds/{id}: Get alerts by feed (v1). Returns paginated list of alerts (by feed ID) for currently authenticated user.DELETE /api/v1/listing-alerts/feeds/{id}: Delete feed (v1). Delete alerts feed (by feed ID) for currently authenticated user.PUT /api/v1/listing-alerts/feeds/{id}/update: Update feed (v1). Update alerts feed by id.POST /api/v1/listing-alerts/search: Search alerts (v1). Returns paginated list of alerts (by requested parameters) for currently authenticated user.GET /alerts-api/feeds: List feeds. Returns a paginated list of feeds, sorted newest first.POST /alerts-api/feeds: Create feed. Create a new alert feed that delivers matching real estate events to your webhook URL.GET /alerts-api/feeds/{feed_id}: Get feed. Returns the feed configuration in the same format as it was originally created.DELETE /alerts-api/feeds/{feed_id}: Delete feed. Permanently removes the feed.PUT /alerts-api/webhooks: Set webhook URL. Sets (or replaces) the delivery URL for all your alert feeds.POST /alerts-api/webhooks/rotate-secret: Rotate signing secret. Issues a new current signing secret.
References
GET /api/v1/references/agencies: Get agencies (v1). Returns a list of all possible agencies with user restrictions.GET /api/v1/references/agents: Get agents (v1). Returns a list of all possible agents with user restrictions.GET /api/v1/references/conditions: Get conditions (v1). Returns a list of all possible estate conditions.GET /api/v1/references/features: Get features (v1). Returns a list of all possible property features.POST /api/v1/references/locations: Get locations (v1). Returns a list of all possible locations with user restrictions.GET /api/v1/references/locations/by-coordinates: Get location by passed coordinates (v1). Returns a location for the given coordinates with user restrictions.POST /api/v1/references/locations/typeahead: Get locations typeahead suggestions scoped by country code (v1). Returns location typeahead suggestions within the given country (ES or PT).GET /api/v1/references/sources: Get sources (v1). Returns a list of all domains for the requested location.GET /api/v1/references/types: Get types (v1). Returns a list of all possible estate types.POST /api/v1/references/zipcode-boundary: Get zipcode boundary by zipcode and country code (v1). Get zipcode boundary by zipcode and country code.
Authentication
POST /login: LoginGET /refresh-token: Refresh Token
Status codes
Every operation documents its own responses. Across the description:
| Status | Meaning | Operations that can return it |
|---|---|---|
200 | OK | 38 |
201 | Created | 1 |
204 | No Content | 5 |
400 | Bad Request | 15 |
401 | Unauthorized | 25 |
403 | Forbidden | 25 |
404 | Not Found | 8 |
409 | Conflict | 1 |
422 | Validation Error | 13 |
Read this reference as Markdown
Add .md to any page's URL, or send Accept: text/markdown. /llms.txt lists every operation next to every MCP tool.