Aller au contenu principal
Accueil/Développeurs
API publique - v1

Données immobilières françaises, gratuites

API REST publique RentaImmo : 3 endpoints JSON pour accéder aux prix, rendements, tension et indice de plus de 35 000 communes françaises. Sans clé API, sans authentification. Licence CC BY 4.0 - mention obligatoire de la source.

Licence CC BY 4.0. Toute réutilisation des données doit citer « Source : RentaImmo » avec un lien dofollow vers https://renta-immo.fr. Voir conditions complètes.

1. Authentification

Pas d'authentification requise pour la version publique. Les endpoints sont en accès libre depuis n'importe quel domaine (CORS Access-Control-Allow-Origin: *).

Un système de clés API privées sera disponible pour les usages commerciaux à forte volumétrie (quotas étendus, support, SLA). Voir quotas.

Limites par défaut

  • 60 requêtes / minute par adresse IP.
  • 1 000 requêtes / jour par adresse IP.
  • Au-delà : réponse HTTP 429 Too Many Requests avec header Retry-After.

Chaque réponse inclut le compteur restant via le header X-RateLimit-Remaining et le champ _meta.rate_limit_remaining.

2. Endpoints

GET/api/public/v1/cities

Liste des villes

Retourne les villes qualifiées (population ≥ 1 000, ≥ 5 transactions DVF, au moins une donnée de marché).

Query params (optionnels)

  • dept - code département INSEE (42, 2A, 75...).
  • minYield - rendement brut minimum, en pourcentage. Ex : 5 pour ≥ 5%.
  • limit - taille de la page (défaut 50, max 200).

Cache

Cache-Control: public, max-age=3600 (1 heure).

GET/api/public/v1/cities/{slug}

Détail d'une ville

Détail enrichi pour une ville : prix, loyer, rendement, tension, indice RentaImmo (score 0-100). 404 si le slug est inconnu ou la ville non qualifiée.

Path param

  • slug - identifiant URL de la ville (ex : lyon, saint-etienne, rennes-35).

Cache

Cache-Control: public, max-age=3600.

GET/api/public/v1/regions

Agrégats par région

Retourne les 13 régions métropolitaines avec moyennes pondérées par population (prix m², loyer m², rendement brut, tension).

Cache

Cache-Control: public, max-age=21600 (6 heures).

Headers communs

  • X-RentaImmo-Source: https://renta-immo.fr
  • X-Attribution-Required: true
  • X-RateLimit-Remaining
  • Access-Control-Allow-Origin: *

3. Exemples

cURL - toutes les villes du Rhône (69) avec rendement ≥ 5%

curl "https://renta-immo.fr/api/public/v1/cities?dept=69&minYield=5&limit=20" \
  -H "Accept: application/json"

cURL - détail Lyon

curl "https://renta-immo.fr/api/public/v1/cities/lyon"

cURL - moyennes par région

curl "https://renta-immo.fr/api/public/v1/regions"

JavaScript / fetch

const res = await fetch(
  "https://renta-immo.fr/api/public/v1/cities?dept=42&minYield=6"
);
if (!res.ok) throw new Error("HTTP " + res.status);
const { data, _meta } = await res.json();
console.log(data); // [{ slug, name, grossYield, ... }, ...]
console.log(_meta.license); // "CC BY 4.0 - Mention obligatoire 'Source: RentaImmo'"

Node.js / TypeScript

interface PublicCity {
  slug: string;
  name: string;
  department: string;
  region: string;
  population: number;
  avgPricePerSqm: number;
  avgRentPerSqm: number;
  grossYield: number;
  tension: number;
  lastUpdated: string;
}

async function getCities(dept?: string): Promise<PublicCity[]> {
  const url = new URL("https://renta-immo.fr/api/public/v1/cities");
  if (dept) url.searchParams.set("dept", dept);
  const r = await fetch(url, { headers: { Accept: "application/json" } });
  if (!r.ok) throw new Error(`API error: ${r.status}`);
  const json: { data: PublicCity[] } = await r.json();
  return json.data;
}

4. Schéma des réponses

GET /cities (200)

{
  "data": [
    {
      "slug": "lyon",
      "name": "Lyon",
      "department": "69",
      "region": "Auvergne-Rhone-Alpes",
      "population": 522969,
      "avgPricePerSqm": 4800,
      "avgRentPerSqm": 15.0,
      "grossYield": 3.8,
      "tension": 85,
      "lastUpdated": "2026-04-30T08:00:00.000Z"
    }
  ],
  "count": 1,
  "_meta": {
    "source": "RentaImmo",
    "attribution_url": "https://renta-immo.fr",
    "license": "CC BY 4.0 - Mention obligatoire 'Source: RentaImmo'",
    "rate_limit_remaining": 59,
    "doc_url": "https://renta-immo.fr/developpeurs"
  }
}

GET /cities/{slug} (200)

{
  "data": {
    "slug": "lyon",
    "name": "Lyon",
    "department": "69",
    "region": "Auvergne-Rhone-Alpes",
    "population": 522969,
    "avgPricePerSqm": 4800,
    "avgRentPerSqm": 15.0,
    "grossYield": 3.8,
    "tension": 85,
    "priceEvolution": "+1.5% sur 1 an",
    "marketTrend": "hausse",
    "dvfTransactionCount": 1240,
    "indice": {
      "score": 67,
      "tier": "bon",
      "breakdown": {
        "yield": 16.6,
        "tension": 21.3,
        "priceEvolution": 13.0,
        "populationGrowth": 5.0,
        "economicStability": 10.0,
        "transports": 5.0
      }
    },
    "lastUpdated": "2026-04-30T08:00:00.000Z"
  },
  "_meta": { ... }
}

Codes d'erreur

  • 400 Bad Request - slug invalide.
  • 404 Not Found - ville inconnue ou non qualifiée.
  • 429 Too Many Requests - quota atteint, voir Retry-After.
  • 500 Internal Server Error - erreur serveur (pas de payload métier).

5. Licence et attribution

Les données exposées par cette API sont publiées sous licence Creative Commons Attribution 4.0 (CC BY 4.0). Vous êtes libre de :

  • Partager - copier et redistribuer les données sur tout support.
  • Adapter - modifier, transformer et utiliser les données, y compris à des fins commerciales.

Sous condition d'attribution

Toute publication, application, étude ou article qui réutilise ces données DOIT :

  • Citer textuellement « Source : RentaImmo ».
  • Inclure un lien dofollow vers https://renta-immo.fr.
  • Indiquer si les données ont été modifiées.

Exemple d'attribution conforme

Source : RentaImmo (https://renta-immo.fr) - Licence CC BY 4.0

Garanties

Les données sont fournies « en l'état », sans garantie d'exactitude ni de complétude. Elles agrègent des sources publiques (DVF, INSEE, observatoires loyer) et un calcul propriétaire. Ne constituent pas un conseil en investissement.

6. Quotas et plans Pro

Le plan public gratuit propose 60 requêtes / minute et 1 000 requêtes / jour par IP. C'est suffisant pour la plupart des prototypes, sites éditoriaux et intégrations widgets.

Pour des usages plus intensifs (production, analytics, white label), nous proposons :

  • Clés API personnelles (non partagées, identification claire).
  • Quotas élevés (jusqu'à 100 000 req/jour).
  • SLA et support dédié.
  • Accès à des endpoints additionnels (DVF brut, alertes, comparateur).
Demander une clé API Pro

Changelog

  • v1.0 - Lancement avec 3 endpoints publics : cities, cities/[slug], regions.

Une question, un bug, une idée d'endpoint ? Écrivez-nous sur /contact ou ouvrez une issue publique.