Pipeline
Features
Sites
API
Integrazioni
FAQ Richiedi accesso
Real Estate Data Infrastructure

Un backend per
tutti i tuoi siti.

Hai 10, 50, 200 siti di agenzie immobiliari? Annidata e un'unica API REST che aggrega feed, ottimizza immagini e serve dati su CDN edge. Colleghi WordPress, Next.js, SvelteKit — qualsiasi frontend. Risposte in <50ms.

<50ms
latenza API edge globale
REST
JSON standard, zero SDK
N:1
N siti, un'unica sorgente
api request
1GET /api/properties
2 ?city=Savona&type=apartment
3 &max_price=200000&min_rooms=3
4
5X-Vendor-Key: pk_your_vendor_key
response · 38ms
1{ "data": [{
2  "id": "prop_a1b2c3",
3  "title": "Trilocale Via Paleocapa",
4  "price": 175000,
5  "rooms": 3, "area_sqm": 85,
6  "gis_rating": 8.4,
7  "images": ["cdn.annidata.it/..."]
8}], "total": 12 }
image resize on-demand
GET cdn.annidata.it/cdn/{vendor}/prop_a1b2c3/img.jpg
    ?w=600&h=400&fit=cover&format=webp

Ogni sito ha il suo parser.
Niente scala.

Gestisci decine di siti per agenzie diverse. Ogni feed ha un formato suo. Le immagini sono pesanti. Il codice si ripete. Suona familiare?

N
Un parser per ogni feed
XML da un gestionale, JSON da un altro, CSV dal terzo. Per ogni nuovo cliente scrivi un'altra integrazione. Quando cambiano il formato, si rompe tutto.
3s+
Immagini copiate e pesanti
Download di immagini full-size sul server, thumbnail generate a mano, formati legacy. LCP scende, Core Web Vitals in rosso, e Google penalizza il ranking.
x50
Codice duplicato tra siti
Lo stesso listing component, la stessa logica di filtro, lo stesso CSS — copia-incollato su ogni progetto. Un bug fix diventa un deploy su 50 repo.

Dal feed grezzo all'API
in tempo reale.

Tu colleghi il tuo frontend all'API. Annidata gestisce import, normalizzazione, immagini e arricchimento. Sync automatico (default 2x/giorno, configurabile), zero intervento.

01
Importazione
Feed XML, JSON o API. Sync automatico con frequenza configurabile (default 2x/giorno). Upsert intelligente: solo i dati cambiati vengono toccati. ID deterministici per zero duplicati.
02
Normalizzazione
Schema unificato indipendente dal provider. Geocoding automatico per regione e provincia via Nominatim. Cache per evitare chiamate ripetute.
03
Arricchimento GIS
PostGIS calcola rating di zona: prossimita a mare, trasporti, banche, negozi. POI importati da OpenStreetMap per ogni citta attiva.
04
Distribuzione
API REST su edge globale. Image resize on-demand (WebP/AVIF). FTS per ricerca testuale. Chatbot RAG per ricerca in linguaggio naturale.

Tutto quello che serve.
Niente di superfluo.

GIS Rating di zona
PostGIS + OpenStreetMap calcolano un punteggio per ogni immobile: prossimita a servizi, trasporti, costa, comfort. Il rating si sincronizza automaticamente con il CDN.
PostGIS + OSM
Image resize on-demand
Qualsiasi dimensione via query string: ?w=600&format=webp. Resize on-the-fly con fallback automatico all'originale. Limiti configurabili per vendor.
Edge Resizing
Multi-canale
Un engine serve web widget, Telegram e WhatsApp. L'adapter pattern traduce formati e bottoni per ogni piattaforma. Widget embedabile con un tag script.
Web + TG + WA
Sync automatico configurabile
Default 2x al giorno, frequenza personalizzabile per vendor. Upsert con ID deterministici SHA-256: se l'immagine esiste gia, non viene riscaricata. Zero duplicati, zero spreco.
Zero duplicati
Ricerca delegata all'API
Full-text search su titolo, descrizione e localita. Filtri combinabili per citta, tipologia, prezzo, locali. Il tuo frontend non gestisce logica di ricerca: una chiamata GET, risultati pronti.
Full-text

Quattro componenti.
Un prodotto.

Non e solo un'API. E uno stack completo: dati, immagini, plugin, SDK e siti pronti. Tutto pensato per chi gestisce immobili su scala.

CDN API
REST API su edge globale. Import, normalizzazione, FTS, multi-vendor. Il core dell'intero sistema.
SEO Images
Resize on-demand, WebP/AVIF, srcset, lazy loading, alt strutturati. Limiti configurabili per piano.
WordPress Plugin
Shortcode, blocchi Gutenberg, template override. Un plugin, N siti WordPress.
JS SDK
Client tipizzato per TypeScript. Funziona con Next, Nuxt, SvelteKit, Astro, o vanilla JS.

Siti pronti. Dominio custom.
Scegli il template.

Non vuoi sviluppare da zero? Scegli un template, collega il dominio, i dati arrivano dall'API. Online in giornata.

Template
Agenzia singola
Sito vetrina per una singola agenzia immobiliare. Homepage, ricerca, dettaglio immobile, pagina agenzia, contatti. Design pulito, SEO-ready, mobile-first.
  • Dominio custom (es. www.nomeagenzia.it)
  • Listings da API con filtri e ricerca
  • Gallery con lightbox e WebP auto
  • Chatbot AI integrato
  • Schema.org per ogni immobile
  • Personalizzazione colori e logo
{ }
Custom build
Sito custom via API
Costruisci il frontend che vuoi con lo stack che preferisci. L'API fornisce i dati, le immagini, il chatbot. Tu controlli ogni pixel. Per chi vuole massima liberta.
  • Qualsiasi framework (Next, Svelte, Astro...)
  • WordPress con plugin + tema custom
  • SSR, SSG, ISR — tu scegli
  • SDK TypeScript tipizzato
  • Chatbot embedabile via script
  • Hosting dove vuoi (Vercel, CF, VPS...)

Velocita misurata
in millisecondi.

L'intera infrastruttura gira su edge. I dati sono vicini ai tuoi utenti, ovunque siano.

<50
ms
Latenza API
Edge
globale
CDN distribuito worldwide
0
duplicati
ID deterministici SHA-256
WebP
/ AVIF
Formati next-gen auto

Standard REST.
JSON ovunque.

Endpoint consistenti, autenticazione flessibile, risposte uniformi. Tutto documentato, tutto predicibile.

GET /api/properties
1// Filtri combinabili
2?city=Savona
3&type=apartment
4&contract=sale
5&max_price=200000
6&min_rooms=3
7&q=vista mare terrazzo
8&page=1&limit=20
GET /api/properties/:id
1{ "id": "prop_a1b2c3",
2  "title": "Trilocale Via Paleocapa",
3  "price": 175000,
4  "rooms": 3,
5  "area_sqm": 85,
6  "city": "Savona",
7  "region": "Liguria",
8  "province": "SV",
9  "gis_rating": 8.4,
10  "images": [
11    "cdn.annidata.it/cdn/{vendor}/prop_a1b2c3/abc.jpg"
12  ],
13  "agency": { "name": "Nome Agenzia", ... }
14}
GET /cdn/:vendor/:propertyId/:filename
1// Image resize on-demand
2?w=600 // larghezza px (1-4096)
3&h=400 // altezza px
4&fit=cover // cover|contain|crop|pad
5&format=webp // webp|avif|jpeg|png
6&q=80 // quality 1-100
7
8// Header: X-Transform-Count: 142/N (configurabile)

Autenticazione

tre metodi, stesso risultato
1// 1. Origin (browser)
2Origin: https://www.tuosito.it
3
4// 2. Vendor Key (server-side)
5X-Vendor-Key: pk_your_vendor_key
6
7// 3. Admin Key (management)
8X-API-Key: admin_key_...

Altri endpoint

GET /api/agencies
// Lista agenzie del vendor
GET /api/agencies/:id
// Dettaglio agenzia con properties count
GET /api/gc/stats
// Storage stats (admin only)
POST /api/sync/trigger
// Trigger sync manuale (admin only)

Protocollo aperto.
Integrabile ovunque.

Nessun SDK proprietario. fetch() e un header bastano. Funziona con qualsiasi linguaggio e framework.

JSON standard
Risposte con struttura consistente: data, total, error. Nessun envelope custom, nessuna sorpresa.
Auth flessibile
Origin per browser, Vendor Key per server-side, Admin Key per management. Dati isolati per vendor, stesso endpoint.
Ricerca delegata, non duplicata
Filtri, full-text search e paginazione vivono nell'API. Il tuo sito non ha bisogno di logica di ricerca: passa i parametri via query string, ricevi risultati ordinati e paginati.
Zero SDK richiesti
Funziona con fetch(), curl, wp_remote_get(), o qualsiasi HTTP client. REST puro, nessuna dipendenza.

WordPress?
Un plugin e via.

Per chi gestisce decine di siti WordPress, il plugin si connette all'API e renderizza listings, ricerca e dettagli. Shortcode, blocchi Gutenberg, template override. Stesso backend, N siti diversi.

  • Shortcode semplice[annidata_listings] con filtri per citta, tipo, prezzo
  • Blocchi Gutenberg — property grid, search bar, single property per l'editor visuale
  • Template override — personalizza layout copiando i template nel tuo tema
  • Chatbot widget — attiva il chatbot AI con un toggle nelle impostazioni
  • Immagini ottimizzate — WebP automatico con lazy loading e srcset
  • SEO-ready — structured data Schema.org per ogni immobile
Coming soon
wp-config.php
1// Annidata CDN Plugin
2define('ANNIDATA_API_URL',
3  'https://cdn.annidata.it');
4define('ANNIDATA_VENDOR_KEY',
5  'pk_your_vendor_key...');
6
7// Opzionale: abilita chatbot
8define('ANNIDATA_CHATBOT', true);
shortcode
1<!-- Griglia immobili -->
2[annidata_listings
3  city="Savona"
4  type="apartment"
5  limit="12"
6  layout="grid"]
7
8<!-- Barra ricerca -->
9[annidata_search show_map="true"]
10
11<!-- Dettaglio singolo -->
12[annidata_property id="prop_a1b2c3"]
functions.php
1// Accesso diretto all'API nel tema
2$properties = annidata()->properties()
3  ->where('city', 'Savona')
4  ->where('max_price', 200000)
5  ->limit(12)
6  ->get();
7
8// Immagine ottimizzata
9annidata_image($property, [
10  'w' => 600,
11  'format' => 'webp',
12  'lazy' => true
13]);

Tre servizi.
Un ecosistema.

Il tuo frontend chiama un'API. Dietro, tre servizi cooperano: CDN per dati e immagini, GIS per rating geospaziale, Chatbot per ricerca conversazionale. Il tuo codice resta pulito.

  • Edge-first — CDN e Chatbot su infrastruttura edge globale, <50ms
  • Database unificato — schema coerente, full-text search integrato
  • GIS dedicato — PostgreSQL + PostGIS su VPS per query geospaziali
  • Multi-vendor — dati isolati per vendor, stesso sistema
Stack Annidata
annidata-cdn
API REST + Image CDN + Sync Engine
Edge
| shared database |
annidata-chatbot
RAG Engine + Lead Gate + Multi-channel
Claude AI
| API sync ratings |
annidata-gis
PostGIS + POI Rating + Geocoding
VPS Docker
| OpenStreetMap data |
Feed Providers
XML · JSON · API · qualsiasi formato
External
Assistente Immobiliare
Online · Risponde in pochi secondi
Ciao! Sono l'assistente immobiliare. Come posso aiutarti?
Cerco trilocale a Savona sotto 200k
Ho trovato 4 trilocali a Savona sotto i 200.000€. Prima di mostrarteli, come ti chiami?
Marco, 333 1234567
Perfetto Marco! Ecco cosa ho trovato:

1. Via Paleocapa — 175.000€
3 locali · 85mq · Rating 8.4

2. Via Nizza — 189.000€
3 locali · 90mq · Rating 7.8
1 · Dettagli 2 · Dettagli Affina ricerca Valutazione

Ricerca in
linguaggio naturale.

L'utente scrive come parlerebbe a un agente. Claude estrae intent, criteri e dati di contatto in un singolo passaggio. Il lead gate cattura nome e telefono prima di mostrare risultati.

  • Extraction AI — intent, contatto, criteri in un prompt
  • Lead gate — nome + contatto prima dei risultati
  • Valutazione AI — stima valore con dati di mercato
  • Widget embedabile — un tag script, chatbot attivo
embed code
1<script
2  src="https://chat.annidata.it/widget.js"
3  data-vendor-key="pk_your_vendor_key"
4  data-primary-color="#2563eb">
5</script>

Immagini che Google
sa leggere.

Le immagini immobiliari sono il contenuto piu pesante del sito. Annidata le ottimizza per performance e per i motori di ricerca, senza toccare il tuo codice.

Senza Annidata
JPEG 3.2MB, 4000x3000px
Nessun srcset o sizes
LCP > 4s su mobile
CLS da immagini senza dimensioni
URL opachi: /img/uuid-random.jpg
Nessun alt text strutturato
Con Annidata
WebP/AVIF, resize on-demand
srcset via query string ?w=
LCP < 1.5s da CDN edge
Dimensioni note, zero CLS
URL semantici: /cdn/{vendor}/{id}/
Dati per alt/title dall'API
srcset automatico
1<!-- HTML generato dal plugin o dal tuo frontend -->
2<img
3  src="cdn.annidata.it/.../img.jpg?w=800&format=webp"
4  srcset="
5    cdn.annidata.it/.../img.jpg?w=400&format=webp 400w,
6    cdn.annidata.it/.../img.jpg?w=800&format=webp 800w,
7    cdn.annidata.it/.../img.jpg?w=1200&format=webp 1200w"
8  sizes="(max-width: 768px) 100vw, 50vw"
9  alt="Trilocale Via Paleocapa - Savona"
10  width="800" height="600"
11  loading="lazy"
12/>
schema.org structured data
1{ "@type": "RealEstateListing",
2  "name": "Trilocale Via Paleocapa",
3  "image": [
4    "cdn.annidata.it/.../img.jpg?w=1200"
5  ],
6  "offers": {
7    "price": 175000,
8    "priceCurrency": "EUR"
9  },
10  "address": {
11    "addressLocality": "Savona",
12    "addressRegion": "Liguria"
13  }
14}

Un backend.
Qualsiasi frontend.

Che tu gestisca 5 siti WordPress o 50 app custom in React, l'API e la stessa. Scegli lo stack che preferisci per ogni cliente.

WordPress multi-sito
Plugin unico su N installazioni. Shortcode per listings, Gutenberg per editing, template per design custom. Ogni sito ha la sua vendor key, i dati restano isolati.
wp-plugin + shortcode + gutenberg blocks
Frontend JS custom
Next.js, Nuxt, SvelteKit, Astro — qualsiasi framework. fetch() verso l'API, SSR o SSG, dati tipizzati. ISR per pagine statiche con revalidazione automatica.
fetch() + SSR/SSG + ISR
App mobile / ibrida
La stessa API REST serve dati a un'app React Native, Flutter o nativa. Immagini gia ottimizzate per mobile con ?w=400&format=webp. Chatbot via WebView.
REST API + image CDN + chatbot embed
next.js — app/properties/page.tsx
1const API = "https://cdn.annidata.it/api";
2const KEY = process.env.ANNIDATA_KEY;
3
4export default async function PropertiesPage({
5  searchParams
6}) {
7  const res = await fetch(
8    `${API}/properties?${new URLSearchParams(
9      searchParams
10    )}`, {
11    headers: { "X-Vendor-Key": KEY },
12    next: { revalidate: 3600 }
13  });
14  const { data, total } = await res.json();
15  return <PropertyGrid items={data} />;
16}
svelte — +page.server.ts
1import { ANNIDATA_KEY } from "$env/static/private";
2
3export async function load({ url }) {
4  const city = url.searchParams.get("city");
5  const res = await fetch(
6    `https://cdn.annidata.it/api/properties
7      ?city=${city}&limit=20`, {
8    headers: {
9      "X-Vendor-Key": ANNIDATA_KEY
10    }
11  });
12  return { properties: await res.json() };
13}

Domande frequenti.

Cos'e Annidata, esattamente?

Annidata e un backend-as-a-service per dati immobiliari. Importa feed da gestionali (XML, JSON, API), li normalizza in uno schema unico, ottimizza le immagini e li espone tramite API REST standard. Il tuo sito — WordPress, Next.js, SvelteKit o altro — consuma l'API e mostra i dati. Tu non scrivi parser, non gestisci immagini, non duplichi logica di ricerca.

Perche esiste? Qual e il problema che risolve?

Nasce dall'esperienza diretta di sviluppatori che gestiscono decine di siti per agenzie immobiliari. Ogni agenzia ha un gestionale diverso, ogni gestionale esporta in un formato diverso. Il risultato: un parser custom per ogni cliente, immagini copiate a mano sul server, codice duplicato tra progetti, e nessuna standardizzazione. Annidata risolve questo problema trasformando N feed eterogenei in un'unica API consistente. Scrivi il frontend una volta, colleghi N clienti.

Devo scrivere la logica di ricerca nel mio frontend?

No. La ricerca e interamente delegata all'API. Il tuo frontend passa i parametri via query string — ?city=Savona&type=apartment&max_price=200000 — e riceve risultati filtrati, ordinati e paginati. Full-text search incluso. Non devi implementare filtri, sorting o paginazione lato client.

Come funzionano le immagini?

Le immagini vengono scaricate dal feed, deduplicate tramite hash SHA-256 e servite su CDN edge. Puoi richiedere qualsiasi dimensione e formato aggiungendo parametri all'URL: ?w=600&format=webp&fit=cover. Nessun resize lato server, nessun plugin. Il tuo HTML usa srcset con URL diversi per ogni breakpoint e il CDN genera le varianti on-demand. I limiti di trasformazione sono configurabili per ogni vendor.

Ogni quanto si aggiornano i dati?

Il sync automatico gira 2 volte al giorno di default (mattina e pomeriggio), ma la frequenza e configurabile per vendor. Se un'agenzia ha bisogno di aggiornamenti piu frequenti, si imposta un cron personalizzato. Il sync e incrementale: solo i dati cambiati vengono toccati, le immagini gia presenti non vengono riscaricate.

Posso usarlo con WordPress?

Si. Il plugin WordPress (in arrivo) si connette all'API tramite una vendor key. Offre shortcode ([annidata_listings]), blocchi Gutenberg e template personalizzabili. Installi il plugin, inserisci la key, e il sito mostra i listings. Per chi preferisce, l'API funziona anche con wp_remote_get() direttamente nel tema.

E se uso React, Svelte o un altro framework?

L'API e REST standard con risposte JSON. Funziona con qualsiasi linguaggio e framework: una fetch() con l'header X-Vendor-Key e ricevi i dati. Un SDK TypeScript tipizzato e in sviluppo per chi vuole autocompletamento e type safety. SSR, SSG, ISR — scegli la strategia di rendering che preferisci.

Il chatbot e obbligatorio?

No. Il chatbot AI e un modulo opzionale. Se lo vuoi, lo attivi con un tag script o un toggle nel plugin WordPress. Se non ti serve, usi solo l'API per i dati e le immagini. Ogni componente della piattaforma — CDN, immagini, chatbot, GIS — e indipendente e attivabile separatamente.

I siti template sono obbligatori?

No. I template (agenzia singola, portale multi-agenzia) sono un'opzione per chi vuole andare online velocemente senza sviluppare. Se preferisci costruire un frontend custom, usi l'API direttamente. Le due opzioni non si escludono: puoi avere template per alcuni clienti e siti custom per altri, tutti collegati alla stessa API.

Su quale infrastruttura gira?

L'API e le immagini girano su Cloudflare Workers e R2, con distribuzione edge globale e latenza sotto i 50ms. Il servizio GIS usa PostgreSQL con PostGIS su VPS dedicato. Il chatbot usa Claude di Anthropic. Ma dal punto di vista del tuo frontend, e solo un'API REST — l'infrastruttura sottostante e trasparente.

Perche l'abbiamo costruito
Annidata nasce da un problema reale. Gestivamo decine di siti per agenzie immobiliari. Ogni agenzia aveva un gestionale diverso, ogni feed un formato diverso. Scrivevamo parser custom, copiavamo immagini, duplicavamo logica di ricerca su ogni progetto. Quando un feed cambiava formato, si rompeva tutto. Quando un cliente chiedeva una feature, dovevamo replicarla su 50 repo.

Abbiamo costruito Annidata per risolvere il nostro problema: standardizzare il dato immobiliare e renderlo disponibile tramite un'unica API, indipendente dal gestionale di origine e dal frontend di destinazione. Oggi lo usiamo in produzione e lo rendiamo disponibile ad altri sviluppatori che affrontano lo stesso problema.
Smetti di duplicare.
Inizia a distribuire.

Un'API per tutti i tuoi siti immobiliari. Collega il primo in 10 minuti.

Richiedi accesso API
Vendor key in giornata · Zero lock-in · REST standard