One API. Every property portal.
Publish, update and synchronize property listings across every portal without maintaining individual integrations.
- 30+ portals
- 1 normalized schema
- Automatic retries
- Webhooks
Request
PUT /v1/listings/lst_123
{
"title": "2 bedroom apartment",
"price": 450000,
"distribution": [
"idealista",
"imovirtual",
"rightmove"
]
}- IdealistaPublished
- ImovirtualPublished
- RightmoveSyncing
Abstraction
Connect to 30+ property portals
View all portals →Stop building portal integrations.
Every property portal has its own API, XML format, authentication, validation rules and operational quirks. Your CRM speaks Listflow. Listflow speaks every portal.
One schema
Normalize listing data once.
One API
Create, update and delete everywhere.
One webhook model
Receive publishing status consistently.
One integration
Listflow maintains portal-specific changes.
Your application
CRM, PMS, or product
Listflow
Canonical model + adapters
- IdealistaOK
- ImovirtualOK
- FotocasaOK
- KyeroOK
Tell us where the listing should be
Developers do not manage individual CREATE/UPDATE/DELETE calls per portal. Declare the desired distribution — Listflow converges actual portal state to match.
Declare the distribution once. No per-portal create, update, or delete calls.
{
"idealista": "published",
"imovirtual": "published",
"greenacres": "unpublished"
}- Published
Idealista
Wanted Published
- Syncing
Imovirtual
Wanted Published
- Unpublished
GreenAcres
Wanted Unpublished
One property model
Instead of translating your CRM model separately for every portal, map your data to Listflow once. Listflow translates the canonical listing into each portal schema.
One canonical property model. Map your CRM fields here — not to every portal.
{
"id": "property_123",
"operation": "sale",
"type": "apartment",
"price": 450000,
"currency": "EUR",
"bedrooms": 3,
"bathrooms": 2,
"area_m2": 98,
"location": {
"city": "Lisbon",
"country": "PT"
},
"media": [
{ "url": "https://cdn.example/1.jpg" }
]
}- Mapped
Idealista
Portal schema
- Mapped
Imovirtual
Portal schema
- Mapped
Fotocasa
Portal schema
- Mapped
Rightmove
Portal schema
- …and more portals
We handle the portal rules
Portal quirks stay behind a predictable interface. Your app sees structured API responses — not opaque feed failures.
Validation, auth, feeds, retries, and portal-specific quirks — handled once behind Listflow.
- Required fields
- Type mappings
- Image rules
- Location maps
- Authentication
- Rate limits
- XML feeds
- REST APIs
- Retries
- Portal errors
- Remote IDs
- Pub status
Portal failures become structured API responses. Validate early and keep retries deterministic.
{
"code": "MISSING_REQUIRED_FIELD",
"portal": "imovirtual",
"field": "energy_certificate",
"retryable": false
}Missing fields, portal codes, and retryability — all explicit.
Listings eventually arrive where they should
Listflow treats distribution as a convergence problem: desired state in, reconciled portal state out — with isolation so one portal never blocks another.
- 01Listing changedEvent in
- 02Desired stateDeclared
- 03QueueAsync
- 04ConnectorPer portal
- 05PortalPublish
- 06ReconciliationConverged
One portal failing never blocks another. Retries, idempotency, and reconciliation keep state converging.
- Asynchronous publishing
- Automatic retries
- Idempotent operations
- Versioned listings
- Rate-limit handling
- Reconciliation
- Per-portal isolation
A small API for a complicated problem
The public surface stays small even as portal complexity grows. Integrate once; extend coverage without changing your application contract.
- PUT
/v1/listings/:idUpsert listing - GET
/v1/listings/:idFetch listing - PUT
/v1/listings/:id/distributionSet desired state - GET
/v1/listings/:id/distributionRead sync status - POST
/v1/listings/:id/validateValidate early - GET
/v1/portalsList portals - GET
/v1/portals/:portal/schemaPortal schema
Integrate once. Portal complexity grows behind the same application contract.
Small surface
A handful of endpoints cover the hard parts.
Stable contract
Add portals without rewriting your integration.
Composable
Upsert, distribute, validate — same listing id.
One upsert. One distribution call. Listflow handles the portals.
import { Listflow } from "@listflow/sdk"
const listflow = new Listflow({
apiKey: process.env.LISTFLOW_API_KEY
})
await listflow.listings.upsert({
id: "property_123",
operation: "sale",
type: "apartment",
price: 450000,
currency: "EUR",
bedrooms: 3,
location: {
city: "Lisbon",
country: "PT"
}
})
await listflow.distribution.set("property_123", {
idealista: "published",
imovirtual: "published",
greenacres: "published"
})Listing
property_123
- IdealistaPublished
- ImovirtualPublished
- Green-AcresPublished
Built for the systems that already own inventory
Listflow sits under CRMs, marketplaces, proptech products and agents — not beside them as another agency tool.
CRM platforms
Add portal export without maintaining dozens of integrations.
Property marketplaces
Distribute inventory to downstream listing channels.
Proptech products
Make listing distribution a feature instead of an integration project.
AI agents
Publish property inventory through deterministic tools and schemas.
Listflow is the distribution layer under products that already own inventory — not another tool beside them.
Sits under your stack
Infrastructure for systems that already own inventory.
Not an agency tool
Built for product and platform teams, not side workflows.
One integration surface
Ship portal coverage as a product feature, not a project.
One integration, growing portal coverage
Portal names below are placeholders while connectors ship. Statuses reflect current planning — not live availability claims.
Idealista
ES / PT / IT
Imovirtual
PT
OLX
BR
Properstar
BR
Fotocasa
ES
Green-Acres
EU
Kyero
EU
Rightmove
UK
Zoopla
UK
Immobiliare
IT
Simple tiers. Pricing coming soon.
No invented numbers. Tell us about your volume and portal needs — we will follow up with a plan that fits.
Pricing coming soon
- Sandbox keys
- Core listing API
- Community support
Pricing coming soon
- Production volume
- Multi-portal sync
- Priority support
Pricing coming soon
- Custom connectors
- SLA & SSO
- Dedicated support
Stop building portal integrations.
Build once with Listflow and distribute listings everywhere.