<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Coordable (Posts about how-to)</title><link>https://coordable.co/</link><description></description><atom:link href="https://coordable.co/categories/how-to.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2026 &lt;a href="mailto:contact@coordable.co"&gt;Nikola Tesla&lt;/a&gt; </copyright><lastBuildDate>Tue, 28 Apr 2026 16:26:40 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>How to Geocode Addresses with BAN (Base Adresse Nationale) API</title><link>https://coordable.co/blog/how-to-geocode-with-ban/</link><dc:creator>François Andrieux</dc:creator><description>&lt;p&gt;If you're working with French addresses, the &lt;strong&gt;Base Adresse Nationale (BAN)&lt;/strong&gt; is your best friend. It's France's official address database, maintained by local authorities and IGN (Institut Géographique National), and it's completely free to use. Whether you need to geocode a single address or process thousands, BAN provides authoritative, accurate results without the licensing restrictions or costs of commercial providers.&lt;/p&gt;
&lt;p&gt;Unlike commercial geocoding services that charge per request and restrict how you can use the data, BAN offers unlimited free geocoding with a permissive open license. This makes it ideal for French organizations, government agencies, and anyone building applications focused on France.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Important update:&lt;/strong&gt; As of 2025, the BAN API has been migrated to the Géoplateforme service managed by IGN. The old endpoint &lt;code&gt;api-adresse.data.gouv.fr&lt;/code&gt; is deprecated and will be decommissioned in January 2026. This tutorial covers the new Géoplateforme service endpoints. (&lt;a href="https://adresse.data.gouv.fr/blog/lapi-adresse-de-la-base-adresse-nationale-est-transferee-a-lign"&gt;Source&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; BAN only handles addresses - it doesn't geocode business names, landmarks, or POIs (Points of Interest). For those, you'll need a commercial provider like Google Maps or HERE. But for pure address geocoding in France, BAN is unmatched.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Table of contents:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-with-ban/#introduction-why-use-ban"&gt;Introduction: Why use BAN?&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-with-ban/#what-is-ban"&gt;What is BAN?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-with-ban/#when-to-use-ban"&gt;When to use BAN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-with-ban/#when-ban-isnt-the-right-choice"&gt;When BAN isn't the right choice&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-with-ban/#single-address-geocoding"&gt;Single address geocoding&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-with-ban/#the-new-endpoint-parameters-2026"&gt;The new endpoint &amp;amp; parameters (2026)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-with-ban/#example-request"&gt;Example request&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-with-ban/#the-response"&gt;The response&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-with-ban/#the-match-score"&gt;The match score&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-with-ban/#batch-geocoding-processing-multiple-addresses"&gt;Batch geocoding: processing multiple addresses&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-with-ban/#method-1-using-the-ban-web-interface"&gt;Method 1: Using the BAN web interface&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-with-ban/#method-2-using-the-ban-api"&gt;Method 2: Using the BAN API&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-with-ban/#understanding-batch-geocoding-with-the-api"&gt;Understanding batch geocoding with the API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-with-ban/#example-request_1"&gt;Example request&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-with-ban/#usage-and-cost"&gt;Usage and cost&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-with-ban/#cost-structure"&gt;Cost structure&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-with-ban/#rate-limits"&gt;Rate limits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-with-ban/#wrapping-up"&gt;Wrapping up&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h3 id="introduction-why-use-ban"&gt;Introduction: Why use BAN?&lt;/h3&gt;
&lt;p&gt;Before we dive into the how-to, let's understand why BAN is special and when it makes sense to use it.&lt;/p&gt;
&lt;h4 id="what-is-ban"&gt;What is BAN?&lt;/h4&gt;
&lt;p&gt;The &lt;strong&gt;Base Adresse Nationale (BAN)&lt;/strong&gt; is France's official national address database. It contains over 25 million addresses compiled from local authority data across all French communes, including overseas territories. What makes BAN unique is that it's:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Authoritative&lt;/strong&gt; - maintained by official French authorities (IGN and local governments)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comprehensive&lt;/strong&gt; - covers every commune in France, including rural areas and small localities&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accurate&lt;/strong&gt; - provides exact rooftop coordinates rather than interpolated guesses&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Free&lt;/strong&gt; - completely free to use with no quotas or charges&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Open&lt;/strong&gt; - fully open license allowing storage, reuse, and redistribution&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here is an example of a BAN address, shown in the official visualization tool:&lt;/p&gt;
&lt;figure&gt;
  &lt;img src="https://coordable.co/images/ban-guide/ban-address-example.png" alt="BAN address example"&gt;
  &lt;figcaption&gt;Example for "118 rue st charles", Paris (screenshot from the BAN interface).&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h4 id="when-to-use-ban"&gt;When to use BAN&lt;/h4&gt;
&lt;p&gt;BAN is perfect when you:
- Need to geocode French addresses (metropolitan France and overseas territories)
- Want authoritative, government-maintained data
- Need to avoid commercial licensing restrictions
- Are building applications that require address validation
- Want to geocode large volumes without cost concerns
- Need to store and reuse geocoded coordinates permanently&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why BAN works so well:&lt;/strong&gt; Since BAN is updated by local authorities who know their addresses intimately, it provides exact coordinates rather than estimates. This is especially valuable for rural addresses and small localities that commercial providers might struggle with.&lt;/p&gt;
&lt;h4 id="when-ban-isnt-the-right-choice"&gt;When BAN isn't the right choice&lt;/h4&gt;
&lt;p&gt;BAN won't work if you need to:
- Geocode addresses outside of France
- Find businesses, landmarks, or POIs by name
- Handle natural language queries or typos (BAN requires well-formatted addresses)
- Need real-time business information (hours, ratings, etc.)&lt;/p&gt;
&lt;p&gt;For these use cases, you'll want to consider commercial providers like Google Maps, HERE, or Mapbox.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="single-address-geocoding"&gt;Single address geocoding&lt;/h3&gt;
&lt;p&gt;Let's start with the simplest use case: geocoding a single address. This is perfect when you need to convert one address into coordinates, perhaps for a form validation or a single lookup.&lt;/p&gt;
&lt;h4 id="the-new-endpoint-parameters-2026"&gt;The new endpoint &amp;amp; parameters (2026)&lt;/h4&gt;
&lt;p&gt;The BAN geocoding service is now provided through the &lt;strong&gt;Géoplateforme&lt;/strong&gt; service managed by IGN. The endpoint for forward geocoding is:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;https://data.geopf.fr/geocodage/search
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; The old endpoint &lt;code&gt;api-adresse.data.gouv.fr&lt;/code&gt; is deprecated and will be decommissioned in January 2026. You should migrate to the new Géoplateforme endpoint. (&lt;a href="https://adresse.data.gouv.fr/blog/lapi-adresse-de-la-base-adresse-nationale-est-transferee-a-lign"&gt;Source&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;This &lt;code&gt;/search&lt;/code&gt; endpoint accepts the following parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;q&lt;/code&gt;&lt;/strong&gt; (required): The address to geocode&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;limit&lt;/code&gt;&lt;/strong&gt; (optional): Number of results to return (default is 10)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;autocomplete&lt;/code&gt;&lt;/strong&gt; (optional): Enables autocomplete mode (default is true)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other parameters are available to precise the geocoding context (e.g. city, postal code, etc.), but I won't cover them here. For the full list of parameters, consult the &lt;a href="https://data.geopf.fr/geocodage/openapi"&gt;OpenAPI documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id="example-request"&gt;Example request&lt;/h4&gt;
&lt;p&gt;Here's an example with the address "118 Rue St Charles, Paris":&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;GET https://data.geopf.fr/geocodage/search?q=118+Rue+St+Charles,+Paris&amp;amp;limit=1
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;And it returns:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"FeatureCollection"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;"features"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="nt"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Feature"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="nt"&gt;"geometry"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Point"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;"coordinates"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mf"&gt;2.283496&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;48.844484&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="nt"&gt;"properties"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;"label"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"118 Rue Saint-Charles 75015 Paris"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;"score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.7424048484848483&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;"housenumber"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"118"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"75115_8513_00118"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"118 Rue Saint-Charles"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;"postcode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"75015"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;"citycode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"75115"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;"x"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;647415.92&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;"y"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;6860731.63&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;"city"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Paris"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;"district"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Paris 15e Arrondissement"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;"context"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"75, Paris, Île-de-France"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"housenumber"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;"importance"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.83312&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;"street"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Rue Saint-Charles"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;"_type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"address"&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;"query"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"118 rue st charles, Paris"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;In this example, we added a limit of 1 to get only one result. The API returns its best guess for the address, ordered by the match score.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What happens?&lt;/strong&gt; The API searches its database for addresses matching your query and returns a list of possible matches. The response includes the exact coordinates, formatted address, and additional metadata like postal code and city.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id="the-response"&gt;The response&lt;/h4&gt;
&lt;p&gt;The API returns a GeoJSON FeatureCollection. Each feature contains:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ID&lt;/strong&gt; - the unique identifier of the address in the BAN database (&lt;code&gt;properties.id&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Coordinates&lt;/strong&gt; - latitude and longitude in the &lt;code&gt;geometry.coordinates&lt;/code&gt; field (format: &lt;code&gt;[longitude, latitude]&lt;/code&gt;). They are also available as &lt;code&gt;x&lt;/code&gt; and &lt;code&gt;y&lt;/code&gt; in the &lt;code&gt;properties&lt;/code&gt; object.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Formatted address&lt;/strong&gt; - the standardized address label in &lt;code&gt;properties.label&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Address components&lt;/strong&gt; - &lt;code&gt;housenumber&lt;/code&gt;, &lt;code&gt;street&lt;/code&gt;, &lt;code&gt;city&lt;/code&gt;, &lt;code&gt;postcode&lt;/code&gt;, &lt;code&gt;citycode&lt;/code&gt;, etc. The housenumber and street name will be mising if not found.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Importance&lt;/strong&gt; - estimated importance of the address in the database (0-1 scale)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Score&lt;/strong&gt; - relevance score indicating match quality between your query and the result (0-1 scale)&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Results are returned ordered by score (highest first), so the first result is typically the best match. However, always verify the address components (especially city and postal code) to ensure the result is correct, as we'll explain in the next section.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id="the-match-score"&gt;The match score&lt;/h4&gt;
&lt;p&gt;The API returns a confidence score between 0 and 1. However, a high score doesn't mean the address is correct, and it definitely doesn't mean the address exists.&lt;/p&gt;
&lt;p&gt;Take our "118 Rue St Charles, Paris" example. The top result scores 0.74, which sounds reasonable. But peek at the second result at 0.62 - it points to "Rue Charles Paris 33130 Bègles". That's 500km away in Bordeaux's suburbs!&lt;/p&gt;
&lt;p&gt;Even trickier: search for "17 Rue St Charles, Paris" and you'll get a respectable 0.74 score... except this address doesn't exist. The API found something that &lt;em&gt;looks&lt;/em&gt; similar, but it's matching strings, not verifying reality.&lt;/p&gt;
&lt;p&gt;The takeaway? &lt;strong&gt;Always sanity-check geocoding results&lt;/strong&gt;. The score tells you how well your query matched &lt;em&gt;something&lt;/em&gt; in the database, not whether that something is what you actually wanted.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="batch-geocoding-processing-multiple-addresses"&gt;Batch geocoding: processing multiple addresses&lt;/h3&gt;
&lt;p&gt;When you have many addresses to geocode - whether it's a spreadsheet with customer addresses or a database export - you'll want to use batch geocoding. BAN offers two approaches: a web interface for one-time tasks and an API for automation.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="method-1-using-the-ban-web-interface"&gt;Method 1: Using the BAN web interface&lt;/h3&gt;
&lt;p&gt;The easiest way to geocode a CSV file is through BAN's web interface. This is perfect if you're not a developer or if you're doing a one-time batch job.&lt;/p&gt;
&lt;p&gt;Here is how to do it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prepare your CSV file&lt;/strong&gt; - Include columns with address data (street number, street name, postal code, city). Export from Excel if needed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Upload to &lt;a href="https://adresse.data.gouv.fr/outils/csv"&gt;BAN CSV tool&lt;/a&gt;&lt;/strong&gt; - Select which columns contain your address components (e.g., &lt;em&gt;Numéro, Rue, Ville&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Download results&lt;/strong&gt; - Get your original data plus coordinates, formatted addresses, and &lt;code&gt;result_status&lt;/code&gt; column.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;
  &lt;img src="https://coordable.co/images/ban-guide/ban-csv-upload.png" alt="BAN CSV tool"&gt;
  &lt;figcaption&gt;The BAN CSV tool allows you to upload a CSV file and select the columns containing the address data.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;And you're done: once you specified&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="method-2-using-the-ban-api"&gt;Method 2: Using the BAN API&lt;/h3&gt;
&lt;p&gt;For automation, integration into applications, or regular batch processing, you'll want to use the BAN API directly. This gives you full control over the process and lets you build custom workflows.&lt;/p&gt;
&lt;h4 id="understanding-batch-geocoding-with-the-api"&gt;Understanding batch geocoding with the API&lt;/h4&gt;
&lt;p&gt;The Géoplateforme service provides a dedicated batch geocoding endpoint that accepts CSV files. This is the recommended approach for processing multiple addresses programmatically.&lt;/p&gt;
&lt;p&gt;The batch endpoint is available at &lt;code&gt;https://data.geopf.fr/geocodage/batch/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The request should be a POST request with the CSV file in the request body. It accept several important parameters:
- &lt;code&gt;columns&lt;/code&gt;: the columns to concatenate the address. It can be left empty to use all columns.
- &lt;code&gt;indexes&lt;/code&gt;: the column to use as index. It's useful to be able to identify the address in the original CSV file.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; You still can make multiple requests to the &lt;code&gt;/search&lt;/code&gt; endpoint, one for each address, but this will be less efficient than using the batch endpoint.&lt;/p&gt;
&lt;h4 id="example-request_1"&gt;Example request&lt;/h4&gt;
&lt;p&gt;Here is an example of a CSV file with the addresses to geocode:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;rue&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;street&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;city&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;postal_code&lt;/span&gt;
&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;12.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;Avenue&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;des&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Champs&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="err"&gt;É&lt;/span&gt;&lt;span class="n"&gt;lysées&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;Paris&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;75008&lt;/span&gt;
&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;45.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;Rue&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;de&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;la&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;République&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;Lyon&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;69002&lt;/span&gt;
&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;78.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;Boulevard&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;de&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;la&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Croisette&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;Cannes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;6400&lt;/span&gt;
&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,,,&lt;/span&gt;&lt;span class="err"&gt;???????&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;156.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;Rue&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Saint&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Honoré&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;Paris&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;75001&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;In this case, the columns to concatenate the address are: &lt;em&gt;rue, street, city, postal_code&lt;/em&gt;, so we can specify &lt;code&gt;columns=rue,street,city,postal_code&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The request should be:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nx"&gt;POST&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="c1"&gt;//data.geopf.fr/geocodage/search/csv&lt;/span&gt;
&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;addresses&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;csv&lt;/span&gt;
&lt;span class="nx"&gt;columns&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;rue&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;street&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;city&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;postal_code&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The response will be a CSV file too, returning both the original data and the geocoded data with new columns all prefixed with &lt;code&gt;result_&lt;/code&gt; (&lt;code&gt;result_score&lt;/code&gt;, &lt;code&gt;result_score_next&lt;/code&gt;, &lt;code&gt;result_label&lt;/code&gt;, &lt;code&gt;result_type&lt;/code&gt;, &lt;code&gt;result_id&lt;/code&gt;, &lt;code&gt;result_housenumber&lt;/code&gt;, &lt;code&gt;result_name&lt;/code&gt;, &lt;code&gt;result_street&lt;/code&gt;, &lt;code&gt;result_postcode&lt;/code&gt;, &lt;code&gt;result_city&lt;/code&gt;, &lt;code&gt;result_context&lt;/code&gt;, &lt;code&gt;result_citycode&lt;/code&gt;, &lt;code&gt;result_oldcitycode&lt;/code&gt;, &lt;code&gt;result_oldcity&lt;/code&gt;, &lt;code&gt;result_district&lt;/code&gt;, &lt;code&gt;result_status&lt;/code&gt;).&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;rue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;street&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;city&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;postal_code&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;longitude&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;latitude&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;result_score&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;result_score_next&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;result_label&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;result_type&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;result_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;result_housenumber&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;result_name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;result_street&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;result_postcode&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;result_city&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;result_context&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;result_citycode&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;result_oldcitycode&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;result_oldcity&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;result_district&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;result_status&lt;/span&gt;
&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;Avenue&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;des&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Champs&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="err"&gt;É&lt;/span&gt;&lt;span class="n"&gt;lysées&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;Paris&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;75008&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mf"&gt;2.302859&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mf"&gt;48.871285&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mf"&gt;0.8596027272727272&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mf"&gt;0.6467871900826445&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;Avenue&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;des&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Champs&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Elysées&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;75008&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Paris&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;street&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;75108&lt;/span&gt;&lt;span class="n"&gt;_1733&lt;/span&gt;&lt;span class="p"&gt;;;&lt;/span&gt;&lt;span class="n"&gt;Avenue&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;des&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Champs&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Elysées&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;Avenue&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;des&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Champs&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Elysées&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;75008&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;Paris&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;75&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Paris&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Î&lt;/span&gt;&lt;span class="n"&gt;le&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;de&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;France&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;75108&lt;/span&gt;&lt;span class="p"&gt;;;;&lt;/span&gt;&lt;span class="n"&gt;Paris&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Arrondissement&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;ok&lt;/span&gt;
&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;45&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;Rue&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;de&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;la&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;République&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;Lyon&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;69002&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mf"&gt;4.835859&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mf"&gt;45.761928&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mf"&gt;0.9157595187165776&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mf"&gt;0.6972321052631578&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;45&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Rue&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;de&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;la&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;République&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;69002&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Lyon&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;housenumber&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;69382&lt;/span&gt;&lt;span class="n"&gt;_6005_00045&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;45&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;45&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Rue&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;de&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;la&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;République&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;Rue&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;de&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;la&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;République&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;69002&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;Lyon&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;69&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Rhône&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Auvergne&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Rhône&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Alpes&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;69382&lt;/span&gt;&lt;span class="p"&gt;;;;&lt;/span&gt;&lt;span class="n"&gt;Lyon&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Arrondissement&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;ok&lt;/span&gt;
&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;78&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;Boulevard&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;de&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;la&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Croisette&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;Cannes&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;06400&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mf"&gt;7.032336&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mf"&gt;43.54684&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mf"&gt;0.9329795565410199&lt;/span&gt;&lt;span class="p"&gt;;;&lt;/span&gt;&lt;span class="mi"&gt;78&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Boulevard&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;de&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;la&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Croisette&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;06400&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Cannes&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;housenumber&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;06029&lt;/span&gt;&lt;span class="n"&gt;_0880_00078&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;78&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;78&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Boulevard&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;de&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;la&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Croisette&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;Boulevard&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;de&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;la&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Croisette&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;06400&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;Cannes&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;06&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Alpes&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Maritimes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Provence&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Alpes&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Côte&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="s1"&gt;'Azur;06029;;;;ok&lt;/span&gt;
&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;;;;&lt;/span&gt;&lt;span class="err"&gt;???????&lt;/span&gt;&lt;span class="p"&gt;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;&lt;span class="n"&gt;skipped&lt;/span&gt;
&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;156&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;Rue&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Saint&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Honoré&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;Paris&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;75001&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mf"&gt;2.339989&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mf"&gt;48.862052&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mf"&gt;0.9164409090909089&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mf"&gt;0.6147660173160173&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;156&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Rue&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Saint&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Honoré&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;75001&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Paris&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;housenumber&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;75101&lt;/span&gt;&lt;span class="n"&gt;_8635_00156&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;156&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;156&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Rue&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Saint&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Honoré&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;Rue&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Saint&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Honoré&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;75001&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;Paris&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;75&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Paris&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Î&lt;/span&gt;&lt;span class="n"&gt;le&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;de&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;France&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="mi"&gt;75101&lt;/span&gt;&lt;span class="p"&gt;;;;&lt;/span&gt;&lt;span class="n"&gt;Paris&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="n"&gt;er&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Arrondissement&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;ok&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The &lt;code&gt;result_status&lt;/code&gt; column contains "ok" if the address was geocoded successfully, "skipped" if the address was not geocoded successfully.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Interesting!&lt;/strong&gt; In batch CSV mode, the API only returns one result per row. However, you can still now the score of the second best match in the &lt;code&gt;result_score_next&lt;/code&gt; column.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="usage-and-cost"&gt;Usage and cost&lt;/h3&gt;
&lt;p&gt;BAN is completely free to use, with no hidden costs or quotas. This makes it an excellent choice for organizations of any size.&lt;/p&gt;
&lt;h4 id="cost-structure"&gt;Cost structure&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;API usage: FREE&lt;/strong&gt; - No charges for API requests&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No quotas&lt;/strong&gt; - Process as many addresses as you need&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No subscription fees&lt;/strong&gt; - No monthly or annual costs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Database download: FREE&lt;/strong&gt; - You can download the entire BAN database for free&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Why BAN is free:&lt;/strong&gt; BAN is a public service maintained by French government agencies. It's funded by taxpayers and provided as open data to benefit French society and economy.&lt;/p&gt;
&lt;p&gt;If you're processing millions of addresses or need offline access, you can &lt;a href="https://adresse.data.gouv.fr/donnees-nationales"&gt;download the complete BAN database&lt;/a&gt; and run your own geocoding locally.&lt;/p&gt;
&lt;p&gt;For a detailed comparison with commercial providers (Google Maps, HERE, Mapbox...), check out my &lt;a href="https://coordable.co/country-analysis/best-geocoding-providers-france/"&gt;Best Geocoding Providers for France&lt;/a&gt; guide.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="rate-limits"&gt;Rate limits&lt;/h3&gt;
&lt;p&gt;BAN allows &lt;strong&gt;50 requests per second per IP&lt;/strong&gt;. If you exceed this, you'll get HTTP 429 errors. Throttle to ~40/second and you'll be fine.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="wrapping-up"&gt;Wrapping up&lt;/h3&gt;
&lt;p&gt;BAN is free, accurate, and open. For French addresses, it's hard to beat. Just remember: migrate to the new Géoplateforme endpoint (&lt;code&gt;data.geopf.fr&lt;/code&gt;) before January 2026 if you're still using the old one.&lt;/p&gt;
&lt;p&gt;Full API reference: &lt;a href="https://data.geopf.fr/geocodage/openapi"&gt;Géoplateforme OpenAPI documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To get a full overview of the geocoding providers for France and a comparison between them, check out our guide: &lt;a href="https://coordable.co/country-analysis/best-geocoding-providers-france/"&gt;Best Geocoding Providers for France&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;small&gt;&lt;strong&gt;Last updated:&lt;/strong&gt; 2025-01-15 |
&lt;strong&gt;Updated by:&lt;/strong&gt; François Andrieux |
&lt;strong&gt;Sources:&lt;/strong&gt; &lt;a href="https://adresse.data.gouv.fr/outils/api-doc/adresse"&gt;BAN API Documentation&lt;/a&gt;, &lt;a href="https://adresse.data.gouv.fr/outils/csv"&gt;CSV Geocoding Tool&lt;/a&gt;, &lt;a href="https://adresse.data.gouv.fr/blog/lapi-adresse-de-la-base-adresse-nationale-est-transferee-a-lign"&gt;API Migration Announcement&lt;/a&gt;, &lt;a href="https://data.geopf.fr/geocodage/getCapabilities"&gt;Géoplateforme Capabilities&lt;/a&gt;, &lt;a href="https://data.geopf.fr/geocodage/openapi"&gt;Géoplateforme OpenAPI Documentation&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;em&gt;Disclaimer: This guide is for informational purposes. Always refer to official BAN and Géoplateforme documentation for current endpoints and terms.&lt;/em&gt;&lt;/small&gt;&lt;/p&gt;</description><category>api</category><category>ban</category><category>france</category><category>geocoding</category><category>guides</category><category>how-to</category><guid>https://coordable.co/blog/how-to-geocode-with-ban/</guid><pubDate>Wed, 15 Jan 2025 10:00:00 GMT</pubDate></item><item><title>How to geocode addresses: Transform text addresses into GPS coordinates</title><link>https://coordable.co/blog/how-to-geocode-addresses/</link><dc:creator>François Andrieux</dc:creator><description>&lt;h3 id="how-to-geocode-addresses-a-practical-guide"&gt;How to geocode addresses: a practical guide&lt;/h3&gt;
&lt;p&gt;You've probably found yourself needing to &lt;strong&gt;convert addresses into coordinates&lt;/strong&gt;. Maybe you have a list of customer addresses and want to see them on a map. Or perhaps you're building an app that needs to locate places automatically.&lt;/p&gt;
&lt;p&gt;Whatever your situation, you've come to the right place! This guide will walk you through exactly how to convert addresses into coordinates using different methods, from simple web tools to powerful APIs. We'll explain &lt;strong&gt;why&lt;/strong&gt; each method exists and &lt;strong&gt;when&lt;/strong&gt; to use it, so you can choose the best approach for your needs.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: If you're curious about &lt;em&gt;how&lt;/em&gt; geocoding works behind the scenes (the technical process), check out our guide: &lt;a href="https://coordable.co/blog/how-geocoding-works-a-simple-guide/"&gt;How geocoding works: A simple guide&lt;/a&gt;. This article focuses on the practical "how-to" - showing you the tools and steps to actually geocode addresses.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Table of contents:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-addresses/#how-to-geocode-addresses-a-practical-guide"&gt;How to geocode addresses: a practical guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-addresses/#two-main-approaches-web-interfaces-vs-apis"&gt;Two main approaches: web interfaces vs APIs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-addresses/#geocoding-one-address-with-google-maps"&gt;Geocoding one address with Google Maps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-addresses/#geocoding-multiple-addresses-with-coordable-excelcsv"&gt;Geocoding multiple addresses with Coordable (Excel/CSV)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-addresses/#geocoding-multiple-addresses-with-apis"&gt;Geocoding multiple addresses with APIs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-addresses/#meta-geocoding-strategies"&gt;Meta-geocoding strategies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-addresses/#what-to-do-after-geocoding"&gt;What to do after geocoding&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-addresses/#1-verify-your-results"&gt;1. Verify your results&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-addresses/#2-visualize-and-the-results"&gt;2. Visualize and the results&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-addresses/#best-practices-for-quality-results"&gt;Best practices for quality results&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-geocode-addresses/#conclusion"&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h3 id="two-main-approaches-web-interfaces-vs-apis"&gt;Two main approaches: web interfaces vs APIs&lt;/h3&gt;
&lt;p&gt;Before we dive into the step-by-step instructions, let's understand why there are different ways to geocode addresses. The truth is, &lt;strong&gt;different situations call for different tools&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Web interfaces&lt;/strong&gt; are perfect for one-time tasks, small batches, or when you want immediate visual results.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;APIs and developer tools&lt;/strong&gt; make sense when you need automation, integration into applications, or to process many addresses regularly.&lt;/p&gt;
&lt;p&gt;The good news? You don't need to be a software developer to use APIs. We'll show you both approaches, starting with the simplest one.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="geocoding-one-address-with-google-maps"&gt;Geocoding one address with Google Maps&lt;/h3&gt;
&lt;p&gt;Let's take an example with a well known interface: &lt;strong&gt;Google Maps&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Google Maps is easy to use, and it's free. If you have only one address to convert to coordinates, this is probably the simplest and fastest way to do it.&lt;/p&gt;
&lt;p&gt;And it's actually possible to use it geocode addresses and save their latitude/longitude. Here is how to do it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Open &lt;a href="https://maps.google.com"&gt;Google Maps&lt;/a&gt;&lt;/strong&gt; in your web browser&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Type your address&lt;/strong&gt; in the search box (e.g., &lt;code&gt;530 Hancock St, Brooklyn, USA&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Right-click on the red marker&lt;/strong&gt; that appears on the map&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Click on the coordinates&lt;/strong&gt; that appear in the popup menu&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The coordinates are copied&lt;/strong&gt; to your clipboard, as latitude and longitude (e.g: &lt;code&gt;40.68421, -73.934043&lt;/code&gt;)&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;
  &lt;img src="https://coordable.co/images/how-to-geocode-addresses/google-maps-interface.png" alt="Google Maps example"&gt;
  &lt;figcaption&gt;How to geocode a single address with Google Maps&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;That's it! You now have the latitude and longitude for that address.&lt;/p&gt;
&lt;p&gt;Google Maps is great for one-off lookups, but it's not designed for batch processing. If you have many addresses, you'll need to repeat this process for each one, which quickly becomes tedious.&lt;/p&gt;
&lt;p&gt;It's possible to use Google My Maps to display data, but it requires latitude and longitude coordinates, not the addresses... And do not allow exporting data.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="geocoding-multiple-addresses-with-coordable-excelcsv"&gt;Geocoding multiple addresses with Coordable (Excel/CSV)&lt;/h3&gt;
&lt;p&gt;If you have multiple addresses in an Excel file and want to see them all on a map, &lt;a href="https://coordable.co"&gt;Coordable&lt;/a&gt; offers a powerful web interface, with batch processing and visualization. Here is how to do it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Go to &lt;a href="https://coordable.co"&gt;Coordable&lt;/a&gt;&lt;/strong&gt; and create an account (free tier available)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Upload your addresses&lt;/strong&gt; - you can upload a CSV file or Excel file with a column (or many columns) containing the addresses you want to geocode.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Select your geocoding provider&lt;/strong&gt; from the dropdown (Google Maps, HERE, Mapbox, etc.). Choose the most appropriate provider for your needs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Start the geocoding job&lt;/strong&gt; - Coordable processes all your addresses&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;View results&lt;/strong&gt; - you can see the results on a map and in a table&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Export your results&lt;/strong&gt; - you can download the results with latitude and longitude, and other geocoding metadata&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;
  &lt;img src="https://coordable.co/images/how-to-geocode-addresses/coordable-upload-interface.png" alt="Coordable interface"&gt;
  &lt;figcaption&gt;The upload interface of Coordable accepts Excel or CSV files.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Coordable transparently handles the geocoding process for you. It gives a clear view on the results and classify addresses for further analysis:&lt;/p&gt;
&lt;figure&gt;
  &lt;img src="https://coordable.co/images/how-to-geocode-addresses/coordable-analytics-1.png" alt="Coordable results"&gt;
  &lt;figcaption&gt;Coordable shows geocoding success rates and types of addresses.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Results are shown on a map and in a table. You can filter on columns to analyse the results, and you can also export.&lt;/p&gt;
&lt;figure&gt;
  &lt;img src="https://coordable.co/images/how-to-geocode-addresses/coordable-analytics-2.png" alt="Coordable results"&gt;
  &lt;figcaption&gt;Table and map views of the results.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;There is no limit in the number of addresses you can geocode. Coordable geocoding by batches automatically and notify you when it's done. It's the &lt;strong&gt;easiest and fastest way&lt;/strong&gt; to geocode a large number of addresses.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://app.coordable.co/" class="learn-more-btn"&gt;Try the coordable app&lt;/a&gt;&lt;/p&gt;

&lt;hr&gt;
&lt;h3 id="geocoding-multiple-addresses-with-apis"&gt;Geocoding multiple addresses with APIs&lt;/h3&gt;
&lt;p&gt;APIs (Application Programming Interfaces) let you geocode addresses programmatically. This means you can automate the process, integrate it into your applications, or process thousands of addresses at once. Here is how to do it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Get an API key&lt;/strong&gt; - you can get an API key from the geocoding provider you want to use.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Make an API HTTP request&lt;/strong&gt; - you can make an API HTTP request to the geocoding provider you want to use.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Handle the response&lt;/strong&gt; - save components, coordinates, handle errors, etc.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Using an API usually require some technical knowledge, and you need to handle the response from the API. Geocoding APIs are not uniformized, which can make it somehow hard to change from an API to an other.&lt;/p&gt;
&lt;!-- TODO: list X new articles "how to geocode with X (code)". 2 parts: 1. use the API directly, 2. use coordable (best) --&gt;

&lt;p&gt;Most of the time, APIs return raw coordinates (latitude, longitude), formatted addresses, and confidence scores. Sometimes they also include address components and place types. However, &lt;strong&gt;APIs don't provide&lt;/strong&gt; visual maps of results, table views for batch processing, built-in quality verification, easy export to common formats, or visual feedback on accuracy.&lt;/p&gt;
&lt;p&gt;This is why many people use APIs for automation but then need additional tools to visualize and verify results. &lt;a href="https://coordable.co"&gt;Coordable&lt;/a&gt; fills this gap by providing API-like automation with built-in visualization and quality checks.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="meta-geocoding-strategies"&gt;Meta-geocoding strategies&lt;/h3&gt;
&lt;p&gt;It's also possible to &lt;strong&gt;combine&lt;/strong&gt; multiple APIs in a cascade way. Here are at least two benefical ways:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;To get higher geocoding rates&lt;/strong&gt;: You could geocode 90% of the addresses using a local, open-source geocoding provider (e.g. a state geocoding service), then rely on the commercial provider for the remaining 10% that the initial provider cannot geocode.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;To pick the best result&lt;/strong&gt;: Some providers work well for POIs (restaurants, enterprises, etc.) and others for residential addresses. Combining 2 or more geocoding providers can help you get the best result possible. However, such strategy require a good understanding of each provider strengths and weaknesses.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Good to know&lt;/strong&gt;: Coordable has out-of-the-box capabilities to implement meta-geocoding strategies. The Coordable API allow you to pick one or multiple providers, and even to add a custom endpoint for geocoding.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="what-to-do-after-geocoding"&gt;What to do after geocoding&lt;/h3&gt;
&lt;p&gt;Geocoding your addresses is just the first step. Here's what you should do next to ensure quality results:&lt;/p&gt;
&lt;h4 id="1-verify-your-results"&gt;1. Verify your results&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Don't trust results blindly!&lt;/strong&gt; Even the best geocoding services can make mistakes. Always verify:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Check a few results manually&lt;/strong&gt; - look them up on a map to confirm they're correct&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Review confidence scores&lt;/strong&gt; - if the API provides them, pay attention to low-confidence results&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Look for outliers&lt;/strong&gt; - addresses that seem to be in the wrong country or region&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Check for false positives&lt;/strong&gt; - results that look confident but are actually wrong&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Good to know:&lt;/strong&gt; &lt;a href="https://coordable.co"&gt;Coordable&lt;/a&gt; includes a built-in verification engine that automatically flags potentially incorrect results, making it easier to spot problems.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id="2-visualize-and-the-results"&gt;2. Visualize and the results&lt;/h4&gt;
&lt;p&gt;Seeing your geocoded addresses on a map helps you&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Spot errors&lt;/strong&gt; - addresses in wrong locations are obvious on a map&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Understand patterns&lt;/strong&gt; - see clusters, distributions, and geographic relationships&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Share results&lt;/strong&gt; - maps are easier to understand than coordinate lists&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tools like Coordable provide built-in map visualization, or you can use external mapping tools (ArcGIS, QGIS, etc.) to create custom visualizations.&lt;/p&gt;
&lt;p&gt;QGIS, as an example, is a free and open-source GIS software that does it very well. Here is an example of a map of the results:&lt;/p&gt;
&lt;figure&gt;
  &lt;img src="https://coordable.co/images/how-to-geocode-addresses/qgis-example.png" alt="QGIS map"&gt;
  &lt;figcaption&gt;QGIS example of a map of the results.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;You can also use mapping libraries (Leaflet, Mapbox GL, Google Maps) to create custom visualizations.&lt;/p&gt;
&lt;h3 id="best-practices-for-quality-results"&gt;Best practices for quality results&lt;/h3&gt;
&lt;p&gt;Geocoding is complex problem to solve. An address that seem obvious to you might be difficult to geocode for a machine. Here are some best practices to help a geocoding engine:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Clean your addresses&lt;/strong&gt;: remove typos, standardize formats (learn more about &lt;a href="https://coordable.co/blog/how-geocoding-works-a-simple-guide/"&gt;how geocoding works&lt;/a&gt; to understand why this matters)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add context&lt;/strong&gt;: include country, postal code when possible&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validate addresses&lt;/strong&gt;: check if they exist before geocoding, when possible&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pro tip:&lt;/strong&gt; If you're processing many addresses, start with a small sample (10-20 addresses) to test your workflow and verify quality before processing the full dataset.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="conclusion"&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;Geocoding addresses doesn't have to be complicated. Whether you need to &lt;strong&gt;transform text addresses into GPS coordinates&lt;/strong&gt; for a one-time project or set up automated geocoding for thousands of addresses, there's a method that fits your needs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Remember:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Don't trust results blindly&lt;/strong&gt; - always verify geocoding results, especially for critical applications&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Analyze your results&lt;/strong&gt; - check completion rates, accuracy, and identify patterns in failures&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pick the best geocoding provider&lt;/strong&gt; based on your analysis and completion rate - different providers work better for different regions and address types&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The key is choosing the right tool for your specific situation. Start simple with a web interface if you're new to geocoding, then move to APIs if you need to scale up or automate.&lt;/p&gt;
&lt;p&gt;If you want to learn more about how geocoding works behind the scenes, check out our guide: &lt;a href="https://coordable.co/blog/how-geocoding-works-a-simple-guide/"&gt;How geocoding works: A simple guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For country-specific recommendations and provider comparisons, see our country analyses:
- &lt;a href="https://coordable.co/country-analysis/best-geocoding-providers-france/"&gt;Best Geocoding Providers for France&lt;/a&gt;
- &lt;a href="https://coordable.co/country-analysis/best-geocoding-providers-united-kingdom/"&gt;Best Geocoding Providers for the United Kingdom&lt;/a&gt;
- &lt;a href="https://coordable.co/country-analysis/best-geocoding-providers-germany/"&gt;Best Geocoding Providers for Germany&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ready to get started? If you need to geocode addresses with visualization and quality checks, &lt;a href="https://coordable.co"&gt;try Coordable&lt;/a&gt; - it's designed to make geocoding easy, whether you have one address or thousands.&lt;/p&gt;
&lt;p&gt;Happy geocoding! ⭐&lt;/p&gt;</description><category>addresses</category><category>coordinates</category><category>geocoding</category><category>guides</category><category>how-to</category><guid>https://coordable.co/blog/how-to-geocode-addresses/</guid><pubDate>Wed, 15 Jan 2025 10:00:00 GMT</pubDate></item></channel></rss>