Démarrage rapide
Commencez à utiliser l'API Infoparcelle en moins de 5 minutes !
Prérequis
Avant de commencer, assurez-vous d'avoir :
- ✅ Un compte Infoparcelle
- ✅ Un abonnement API actif
- ✅ Une clé API générée
Si ce n'est pas encore fait, consultez le guide Authentification.
Étape 1 : Testez votre clé API
Vérifiez que votre clé fonctionne en faisant une requête simple :
curl -X GET "https://app.infoparcelle.fr/api/v1/geocoder/search?recherche=1+Rue+de+Rivoli&limite=1" \
-H "Authorization: Bearer VOTRE_CLE_API" \
-H "Accept: application/json"
Si tout fonctionne, vous devriez recevoir une réponse JSON avec des adresses parisiennes.
Étape 2 : Premier exemple complet
Rechercher une adresse
- cURL
- PHP
- JavaScript
- Python
curl -X GET \
"https://app.infoparcelle.fr/api/v1/geocoder/search?recherche=7+Rue+de+l%27Elysée+1+Rue+de+Rivoli&limite=5&champs=identifiant_ban,adresse_complete,numero,nom_voie,municipalite,parcelles,centre,similarite" \
-H "Authorization: Bearer VOTRE_CLE_API" \
-H "Accept: application/json"
<?php
$apiKey = getenv('INFOPARCELLE_API_KEY');
$url = 'https://app.infoparcelle.fr/api/v1/geocoder/search';
$params = http_build_query([
'recherche' => '7 Rue de l\'Elysée Paris',
'limite' => 5,
'champs' => 'identifiant_ban,adresse_complete,numero,nom_voie,municipalite,parcelles,centre,similarite'
]);
$ch = curl_init($url . '?' . $params);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Accept: application/json',
],
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 200) {
$adresses = json_decode($response, true);
foreach ($adresses as $adresse) {
echo "📍 " . $adresse['identifiant_ban'] . "\n";
echo "📍 " . $adresse['adresse_complete'] . "\n";
echo " GPS: " . $adresse['centre']['coordinates'][1]
. ", " . $adresse['centre']['coordinates'][0] . "\n";
echo " Similarité: " . round($adresse['similarite'] * 100) . "%\n\n";
}
} else {
echo "Erreur HTTP: $httpCode\n";
echo $response . "\n";
}
const apiKey = process.env.INFOPARCELLE_API_KEY;
async function searchAddress(query) {
const url = new URL('https://app.infoparcelle.fr/api/v1/geocoder/search');
url.searchParams.set('recherche', query);
url.searchParams.set('limite', '5');
url.searchParams.set('champs', 'identifiant_ban,adresse_complete,numero,nom_voie,municipalite,parcelles,centre,similarite');
const response = await fetch(url, {
headers: {
'Authorization': `Bearer ${apiKey}`,
'Accept': 'application/json',
},
});
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${await response.text()}`);
}
const adresses = await response.json();
for (const adresse of adresses) {
console.log(`📍 ${adresse.identifiant_ban}`);
console.log(`📍 ${adresse.adresse_complete}`);
console.log(` GPS: ${adresse.centre.coordinates[1]}, ${adresse.centre.coordinates[0]}`);
console.log(` Similarité: ${Math.round(adresse.similarite * 100)}%\n`);
}
return adresses;
}
// Utilisation
searchAddress('7 Rue de l\'Elysée Paris')
.then(results => console.log(`Trouvé ${results.length} résultats`))
.catch(error => console.error('Erreur:', error));
import os
import requests
api_key = os.getenv('INFOPARCELLE_API_KEY')
def search_address(query, limit=5, champs='identifiant_ban,adresse_complete,numero,nom_voie,municipalite,parcelles,centre,similarite'):
url = 'https://app.infoparcelle.fr/api/v1/geocoder/search'
response = requests.get(
url,
params={
'recherche': query,
'limite': limit,
'champs': champs,
},
headers={
'Authorization': f'Bearer {api_key}',
'Accept': 'application/json',
}
)
response.raise_for_status()
adresses = response.json()
for adresse in adresses:
print(f"📍 {adresse['identifiant_ban']}")
print(f"📍 {adresse['adresse_complete']}")
coords = adresse['centre']['coordinates']
print(f" GPS: {coords[1]}, {coords[0]}")
print(f" Similarité: {round(adresse['similarite'] * 100)}%\n")
return adresses
# Utilisation
try:
results = search_address('7 Rue de l\'Elysée Paris')
print(f"Trouvé {len(results)} résultats")
except requests.exceptions.RequestException as e:
print(f"Erreur: {e}")
Résultat attendu
[
{
"identifiant_ban": "75108_3190_00007",
"adresse_complete": "7 Rue de l'Elysée 75008 Paris 8e Arrondissement",
"numero": "10",
"nom_voie": "rue de la République",
"municipalite": {
"code": "75101",
"nom": "Paris",
"codes_postaux": [
"75001",
"75002",
"75003"
]
},
"parcelles": [
{
"code": "750010001AB0001",
"section": "AB",
"numero": "0001",
"superficie": 450.5
},
{
"code": "750010001AB0002",
"section": "AB",
"numero": "0002",
"superficie": 380
}
],
"centre": {
"type": "Point",
"coordinates": [
2.3522,
48.8566
]
},
"similarite": 0.95
}
]
Étape 3 : Explorez d'autres endpoints
Rechercher une parcelle cadastrale
- cURL
- PHP
- JavaScript
- Python
curl -X GET \
"https://app.infoparcelle.fr/api/v1/parcelles/recherche?code_municipalite=75108§ion=AK&numero=0042" \
-H "Authorization: Bearer VOTRE_CLE_API"
<?php
$params = http_build_query([
'code_municipalite' => '75108',
'section' => 'AK',
'numero' => '0042',
]);
$ch = curl_init('https://app.infoparcelle.fr/api/v1/parcelles/recherche?' . $params);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
],
]);
$response = curl_exec($ch);
$parcelles = json_decode($response, true);
curl_close($ch);
const url = new URL('https://app.infoparcelle.fr/api/v1/parcelles/recherche');
url.searchParams.set('code_municipalite', '75108');
url.searchParams.set('section', 'AK');
url.searchParams.set('numero', '0042');
const response = await fetch(url, {
headers: {
'Authorization': `Bearer ${apiKey}`,
},
});
const parcelles = await response.json();
response = requests.get(
'https://app.infoparcelle.fr/api/v1/parcelles/recherche',
params={
'code_municipalite': '75108',
'section': 'AK',
'numero': '0042',
},
headers={
'Authorization': f'Bearer {api_key}',
}
)
parcelles = response.json()
Rechercher des transactions immobilières
- cURL
- PHP
- JavaScript
- Python
curl -X GET \
"https://app.infoparcelle.fr/api/v1/dvfs?code_municipalite=75108&bati_type=7&valeur_fonciere_min=200000&valeur_fonciere_max=500000&date_mutation_min=2023-01-01&champs=id_mutation,date_mutation,nature_mutation,bati_type,surface_batie,valeur_fonciere,municipalite" \
-H "Authorization: Bearer VOTRE_CLE_API"
<?php
$params = http_build_query([
'code_municipalite' => '75108',
'bati_type' => 7,
'valeur_fonciere_min' => 200000,
'valeur_fonciere_max' => 500000,
'date_mutation_min' => '2023-01-01',
'champs' => 'id_mutation,date_mutation,nature_mutation,bati_type,surface_batie,valeur_fonciere,municipalite',
]);
$ch = curl_init('https://app.infoparcelle.fr/api/v1/dvfs?' . $params);
// ... configuration curl
const url = new URL('https://app.infoparcelle.fr/api/v1/dvfs');
url.searchParams.set('code_municipalite', '75108');
url.searchParams.set('bati_type', 7);
url.searchParams.set('valeur_fonciere_min', '200000');
url.searchParams.set('valeur_fonciere_max', '500000');
url.searchParams.set('date_mutation_min', '2023-01-01');
url.searchParams.set('champs', 'id_mutation,date_mutation,nature_mutation,bati_type,surface_batie,valeur_fonciere,municipalite');
const response = await fetch(url, {
headers: { 'Authorization': `Bearer ${apiKey}` },
});
const transactions = await response.json();
response = requests.get(
'https://app.infoparcelle.fr/api/v1/dvfs',
params={
'code_municipalite': '75108',
'bati_type': 7,
'valeur_fonciere_min': 200000,
'valeur_fonciere_max': 500000,
'date_mutation_min': '2023-01-01',
'champs': 'id_mutation,date_mutation,nature_mutation,bati_type,surface_batie,valeur_fonciere,municipalite'
},
headers={'Authorization': f'Bearer {api_key}'}
)
transactions = response.json()
Étape 4 : Gérer la pagination
Pour parcourir de grands ensembles de résultats, utilisez la pagination par curseur :
- JavaScript
- Python
async function getAllResults(url, maxPages = 10) {
const allResults = [];
let currentUrl = url;
let page = 0;
while (currentUrl && page < maxPages) {
const response = await fetch(currentUrl, {
headers: {
'Authorization': `Bearer ${apiKey}`,
},
});
const results = await response.json();
allResults.push(...results);
// Récupérer le curseur de la page suivante
const nextCursor = response.headers.get('X-Pagination-Next-Cursor');
const hasMore = response.headers.get('X-Pagination-Has-More') === 'true';
if (hasMore && nextCursor) {
const nextUrl = new URL(url);
nextUrl.searchParams.set('curseur', nextCursor);
currentUrl = nextUrl.toString();
page++;
} else {
break;
}
}
return allResults;
}
// Utilisation
const allAdresses = await getAllResults(
'https://app.infoparcelle.fr/api/v1/geocoder/search?recherche=place+des&limite=50'
);
console.log(`Total: ${allAdresses.length} adresses`);
def get_all_results(url, max_pages=10):
all_results = []
current_url = url
page = 0
while current_url and page < max_pages:
response = requests.get(
current_url,
headers={'Authorization': f'Bearer {api_key}'}
)
results = response.json()
all_results.extend(results)
# Récupérer le curseur de la page suivante
next_cursor = response.headers.get('X-Pagination-Next-Cursor')
has_more = response.headers.get('X-Pagination-Has-More') == 'true'
if has_more and next_cursor:
from urllib.parse import urlparse, parse_qs, urlencode, urlunparse
parsed = urlparse(url)
params = parse_qs(parsed.query)
params['curseur'] = [next_cursor]
new_query = urlencode(params, doseq=True)
current_url = urlunparse(parsed._replace(query=new_query))
page += 1
else:
break
return all_results
# Utilisation
all_adresses = get_all_results(
'https://app.infoparcelle.fr/api/v1/geocoder/search?recherche=place+des&limite=50'
)
print(f"Total: {len(all_adresses)} adresses")
🎉 Félicitations !
Vous savez maintenant utiliser l'API Infoparcelle ! Voici quelques ressources pour aller plus loin :
Approfondissez vos connaissances
- Référence API - Documentation complète des endpoints
- Guides - Guides détaillés par fonctionnalité
Explorez les cas d'usage
Besoin d'aide ?
Prochaine étape
Découvrez comment gérer les limites de débit et optimiser vos requêtes !