<?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 api)</title><link>https://coordable.co/</link><description></description><atom:link href="https://coordable.co/categories/api.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>US Census + Google Maps: How to cut geocoding costs by 90% for US addresses</title><link>https://coordable.co/blog/how-to-cut-geocoding-costs-by-90-for-us-addresses-census-google-maps/</link><dc:creator>François Andrieux</dc:creator><description>&lt;h3 id="the-setup"&gt;The setup&lt;/h3&gt;
&lt;p&gt;We wanted to test the effectiveness of a cascading geocoding strategy for US addresses. We took 1,000 real US addresses (a mix of residential and business addresses, of variable quality but overall correct) and ran three geocoding tests.&lt;/p&gt;
&lt;p&gt;Here is the summary of the results:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Test&lt;/th&gt;
&lt;th&gt;Provider(s)&lt;/th&gt;
&lt;th&gt;Addresses resolved&lt;/th&gt;
&lt;th&gt;Cost per 1,000&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;US Census only&lt;/td&gt;
&lt;td&gt;91.9%&lt;/td&gt;
&lt;td&gt;$0.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Google Maps only&lt;/td&gt;
&lt;td&gt;92.6%&lt;/td&gt;
&lt;td&gt;$5.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;US Census → Google Maps (cascade)&lt;/td&gt;
&lt;td&gt;97.3%&lt;/td&gt;
&lt;td&gt;$0.41&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The cascade delivers &lt;strong&gt;97.3% addresses found at $0.41&lt;/strong&gt;, compared to $5.00 for Google Maps alone. That is a &lt;strong&gt;90% cost reduction&lt;/strong&gt; with a &lt;strong&gt;+5.4 percentage point improvement&lt;/strong&gt; in addresses resolved. Amazing right?&lt;/p&gt;
&lt;p&gt;Read on to see how each test was run and what the results look like.&lt;/p&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-cut-geocoding-costs-by-90-for-us-addresses-census-google-maps/#the-setup"&gt;The setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-cut-geocoding-costs-by-90-for-us-addresses-census-google-maps/#test-1-us-census-geocoder"&gt;Test 1: US Census Geocoder&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-cut-geocoding-costs-by-90-for-us-addresses-census-google-maps/#what-is-the-us-census-geocoder"&gt;What is the US Census Geocoder?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-cut-geocoding-costs-by-90-for-us-addresses-census-google-maps/#results"&gt;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-cut-geocoding-costs-by-90-for-us-addresses-census-google-maps/#test-2-google-maps-geocoding-api"&gt;Test 2: Google Maps Geocoding API&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-cut-geocoding-costs-by-90-for-us-addresses-census-google-maps/#what-is-google-maps-geocoding"&gt;What is Google Maps Geocoding?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-cut-geocoding-costs-by-90-for-us-addresses-census-google-maps/#results_1"&gt;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-cut-geocoding-costs-by-90-for-us-addresses-census-google-maps/#test-3-us-census-google-maps-cascade"&gt;Test 3: US Census + Google Maps (cascade)&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-cut-geocoding-costs-by-90-for-us-addresses-census-google-maps/#how-the-cascade-works"&gt;How the cascade works&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-cut-geocoding-costs-by-90-for-us-addresses-census-google-maps/#results_2"&gt;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-cut-geocoding-costs-by-90-for-us-addresses-census-google-maps/#going-further-adding-a-third-provider"&gt;Going further: adding a third provider&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-cut-geocoding-costs-by-90-for-us-addresses-census-google-maps/#conclusion"&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-cut-geocoding-costs-by-90-for-us-addresses-census-google-maps/#where-to-go-from-here"&gt;Where to go from here&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h3 id="test-1-us-census-geocoder"&gt;Test 1: US Census Geocoder&lt;/h3&gt;
&lt;h4 id="what-is-the-us-census-geocoder"&gt;What is the US Census Geocoder?&lt;/h4&gt;
&lt;p&gt;The &lt;a href="https://geocoding.geo.census.gov/"&gt;US Census Geocoder&lt;/a&gt; is a &lt;strong&gt;public and free API&lt;/strong&gt; provided by the US federal government. It is not open source (the underlying software and data are maintained by the Census Bureau), but it is freely accessible, requires no API key, and has no published usage limits or cost.&lt;/p&gt;
&lt;p&gt;It is built on &lt;a href="https://www.census.gov/geographies/mapping-files/time-series/geo/tiger-line-file.html"&gt;TIGER/Line&lt;/a&gt; data, the official US address dataset. Results are &lt;strong&gt;interpolated on the street&lt;/strong&gt; rather than placed at the exact building location (no rooftop precision). For most use cases (delivery routing, territory analysis, customer mapping), street-level interpolation is entirely sufficient.&lt;/p&gt;
&lt;p&gt;The output data is in the public domain, with no licensing restrictions on how you store or use the coordinates.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Important limitation:&lt;/strong&gt; US Census only understands structured street addresses. It cannot geocode points of interest, business names, or company names. If your dataset contains entries like "Starbucks, Chicago" or "Boeing headquarters", US Census will return nothing for those rows. In that case, the 90% cost reduction figure will not hold: a commercial provider will need to handle a much larger share of your requests. &lt;strong&gt;This strategy works best for datasets of clean street addresses ; see below for a solution.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id="results"&gt;Results&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Accuracy: 91.9%&lt;/strong&gt; (919 out of 1,000 addresses resolved)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cost: $0.00&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;
  &lt;img src="https://coordable.co/images/how-to-cut-geocoding-costs-by-90-for-us-addresses-census-google-maps/test1-us-census-screenshot.png" alt="Screenshot of the US Census geocoding session: 91.9% valid results, $0 cost."&gt;
  &lt;figcaption&gt;Test 1, US Census only: 919/1,000 addresses resolved, at no cost.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;91.9% is a strong result for a free API. The 8.1% of unresolved addresses are typically due to non-standard formatting, missing components, or addresses that simply do not appear in the TIGER/Line dataset.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="test-2-google-maps-geocoding-api"&gt;Test 2: Google Maps Geocoding API&lt;/h3&gt;
&lt;h4 id="what-is-google-maps-geocoding"&gt;What is Google Maps Geocoding?&lt;/h4&gt;
&lt;p&gt;Google Maps is one of the most widely used geocoding providers. At &lt;strong&gt;$5.00 per 1,000 addresses&lt;/strong&gt; (after the free quota), it is also one of the most expensive.&lt;/p&gt;
&lt;p&gt;It returns different precision levels: &lt;code&gt;ROOFTOP&lt;/code&gt; for exact building locations, and &lt;code&gt;RANGE_INTERPOLATED&lt;/code&gt; for street-level interpolation. For a fair comparison with US Census, which only returns street-level results, we accept &lt;strong&gt;both&lt;/strong&gt; &lt;code&gt;ROOFTOP&lt;/code&gt; and &lt;code&gt;RANGE_INTERPOLATED&lt;/code&gt; in this test.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Licensing note:&lt;/strong&gt; Google Maps results come with significant restrictions beyond the price. Google's Terms of Service do not allow you to store geocoded coordinates long-term or use them outside of a Google Maps display context. If you need to build a database of geocoded addresses, use the results in a non-Google mapping tool, or export coordinates for analysis, you may be violating Google's terms. This is an important constraint to factor in before committing to Google as your primary geocoding provider.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: Google free quota is excluded from these cost figures, as its effective value depends on overall usage across all Google Maps products. The $5.00 figure reflects the standard pay-as-you-go rate.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id="results_1"&gt;Results&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Accuracy: 92.6%&lt;/strong&gt; (926 out of 1,000 addresses resolved)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cost: $5.00&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;
  &lt;img src="https://coordable.co/images/how-to-cut-geocoding-costs-by-90-for-us-addresses-census-google-maps/test2-google-maps-screenshot.png" alt="Screenshot of the Google Maps geocoding session: 92.6% valid results, $5.00 per 1,000."&gt;
  &lt;figcaption&gt;Test 2, Google Maps only: 926/1,000 addresses resolved at ROOFTOP or RANGE_INTERPOLATED level, at $5.00 per 1,000.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Google Maps edges out US Census by 0.7 percentage points (92.6% vs 91.9%), but at a cost of $5.00 per 1,000 addresses vs $0. For this dataset, paying for Google Maps buys very little extra accuracy on its own.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="test-3-us-census-google-maps-cascade"&gt;Test 3: US Census + Google Maps (cascade)&lt;/h3&gt;
&lt;h4 id="how-the-cascade-works"&gt;How the cascade works&lt;/h4&gt;
&lt;p&gt;The cascading strategy is straightforward:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Send every address to US Census first.&lt;/strong&gt; If US Census returns a valid result, use it. Cost: $0.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;For addresses that US Census could not resolve&lt;/strong&gt;, send them to Google Maps. Cost: $5.00 per 1,000 for this subset only.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In our test, approximately &lt;strong&gt;90% of addresses were resolved by US Census&lt;/strong&gt; (free), and only &lt;strong&gt;~8% required Google Maps&lt;/strong&gt;, at a total cost of $0.41. The remaining ~2.7% were not resolved by either provider.&lt;/p&gt;
&lt;p&gt;This is why the cost drops so dramatically: instead of paying $5.00 for every address, you only pay Google's rate for the small fraction that US Census could not handle.&lt;/p&gt;
&lt;figure&gt;
  &lt;img src="https://coordable.co/images/how-to-cut-geocoding-costs-by-90-for-us-addresses-census-google-maps/workflow-visual.png" alt="Screenshot of the cascading geocoding workflow in Coordable: US Census as step 1, Google Maps as step 2 with ROOFTOP and RANGE_INTERPOLATED accepted."&gt;
  &lt;figcaption&gt;The two-provider cascade configured in Coordable: US Census first, then Google Maps for unresolved addresses, accepting both ROOFTOP and RANGE_INTERPOLATED results.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h4 id="results_2"&gt;Results&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Accuracy: 97.3%&lt;/strong&gt; (973 out of 1,000 addresses resolved)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cost: $0.41&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Provider split: ~90% resolved by US Census · ~8% resolved by Google Maps · ~2.7% unresolved&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;
  &lt;img src="https://coordable.co/images/how-to-cut-geocoding-costs-by-90-for-us-addresses-census-google-maps/test3-cascade-screenshot.png" alt="Screenshot of the cascading geocoding session: 97.3% valid results, $0.41 per 1,000."&gt;
  &lt;figcaption&gt;Test 3, US Census → Google Maps cascade: 973/1,000 addresses resolved, at $0.41 per 1,000.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;The cascade delivers a &lt;strong&gt;+5.4 percentage point improvement&lt;/strong&gt; over either provider alone, at 8% of the cost of Google Maps. The key insight is that US Census and Google Maps fail on &lt;em&gt;different&lt;/em&gt; addresses. Addresses that US Census cannot parse or match are often resolved by Google's more robust parsing engine, and vice versa.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://coordable.co" class="learn-more-btn"&gt;Set up cascading geocoding with Coordable&lt;/a&gt;&lt;/p&gt;

&lt;hr&gt;
&lt;h3 id="going-further-adding-a-third-provider"&gt;Going further: adding a third provider&lt;/h3&gt;
&lt;p&gt;This two-provider cascade already delivers strong results, but you can push accuracy even higher by adding a third provider.&lt;/p&gt;
&lt;p&gt;For example, adding &lt;a href="https://coordable.co/provider/here-geocoding-api/"&gt;HERE&lt;/a&gt; as a second fallback (after Google Maps) would catch some of the 2.7% of addresses that neither US Census nor Google resolved. HERE has strong US address coverage and is significantly cheaper than Google Maps at $0.83 per 1,000 addresses. A three-provider cascade (US Census → Google Maps → HERE) would likely push accuracy above 97.3% while keeping the overall cost low, since HERE would only handle the tiny fraction of addresses that both previous providers missed.&lt;/p&gt;
&lt;p&gt;We ran a similar experiment with French addresses using the &lt;a href="https://coordable.co/blog/how-to-geocode-with-ban/"&gt;BAN API&lt;/a&gt; (the French government geocoder), Google Maps, and HERE, and achieved 97.7% accuracy at $1.62 per 1,000, a 67% cost reduction compared to Google alone. The principle is identical: route easy addresses through the cheapest provider, and reserve expensive providers for the hard cases. See &lt;a href="https://coordable.co/blog/how-to-reduce-geocoding-costs-by-67/"&gt;How to reduce geocoding costs by 67%&lt;/a&gt; for the full breakdown.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="conclusion"&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;For US address geocoding, the US Census Geocoder is a powerful and underused tool. It is free, requires no API key, and handles the vast majority of clean street addresses correctly. Pairing it with Google Maps as a fallback gives you the best of both worlds: near-complete coverage at a fraction of the cost.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Test&lt;/th&gt;
&lt;th&gt;Provider(s)&lt;/th&gt;
&lt;th&gt;Found&lt;/th&gt;
&lt;th&gt;Cost per 1,000&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;US Census only&lt;/td&gt;
&lt;td&gt;91.9%&lt;/td&gt;
&lt;td&gt;$0.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Google Maps only&lt;/td&gt;
&lt;td&gt;92.6%&lt;/td&gt;
&lt;td&gt;$5.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;US Census → Google Maps (cascade)&lt;/td&gt;
&lt;td&gt;97.3%&lt;/td&gt;
&lt;td&gt;$0.41&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The key caveat: this strategy works for &lt;strong&gt;street address datasets&lt;/strong&gt;. If your data contains business names, POIs, or unstructured inputs, US Census will not help and you will need a commercial provider for a larger share of requests.&lt;/p&gt;
&lt;p&gt;However, it would have been possible to plug a low-cost provider to handle the remaining addresses as well : HERE, Nominatim (OSM), OpenCage, etc.&lt;/p&gt;
&lt;p&gt;If you want to implement this cascade without writing custom code, &lt;a href="https://coordable.co"&gt;Coordable&lt;/a&gt; lets you configure multi-provider workflows with quality rules at each step, so only good results pass through.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://coordable.co" class="learn-more-btn"&gt;Try cascading geocoding with Coordable&lt;/a&gt;&lt;/p&gt;

&lt;hr&gt;
&lt;h3 id="where-to-go-from-here"&gt;Where to go from here&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;See how the same cascading approach cuts costs by 67% for French addresses: &lt;a href="https://coordable.co/blog/how-to-reduce-geocoding-costs-by-67/"&gt;How to reduce geocoding costs by 67%&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Compare geocoding prices across all major providers: &lt;a href="https://coordable.co/blog/geocoding-prices-2026/"&gt;Geocoding prices in 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Learn more about Google Maps Geocoding: &lt;a href="https://coordable.co/provider/google-maps-geocoding-api/"&gt;Google Maps Geocoding API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category>2026</category><category>api</category><category>geocoding</category><category>pricing</category><category>providers</category><category>USA</category><guid>https://coordable.co/blog/how-to-cut-geocoding-costs-by-90-for-us-addresses-census-google-maps/</guid><pubDate>Sat, 21 Mar 2026 10:00:00 GMT</pubDate></item><item><title>How to reduce geocoding costs by 67%</title><link>https://coordable.co/blog/how-to-reduce-geocoding-costs-by-67/</link><dc:creator>François Andrieux</dc:creator><description>&lt;h3 id="the-use-case-a-logistics-company-paying-way-too-much-for-geocoding"&gt;The use case: a logistics company paying way too much for geocoding&lt;/h3&gt;
&lt;p&gt;If you work in logistics, insurance, or routing software, you know the drill: geocoding volumes are massive, and the bills that come with them are too.&lt;/p&gt;
&lt;p&gt;In this article, we show how &lt;a href="https://coordable.co"&gt;Coordable&lt;/a&gt; helped a logistics company cut geocoding costs by &lt;strong&gt;67%&lt;/strong&gt; while also increasing its share of valid geocoding results from 94% to 97.7%. &lt;strong&gt;Total savings: $20,280 per year.&lt;/strong&gt; 🤩&lt;/p&gt;
&lt;p&gt;Let's dive in.&lt;/p&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-reduce-geocoding-costs-by-67/#the-use-case-a-logistics-company-paying-way-too-much-for-geocoding"&gt;The use case: a logistics company paying way too much for geocoding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-reduce-geocoding-costs-by-67/#the-problem-choosing-between-cost-and-quality"&gt;The problem: choosing between cost and quality&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-reduce-geocoding-costs-by-67/#the-solution-cascading-providers"&gt;The solution: cascading providers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-reduce-geocoding-costs-by-67/#the-workflow-3-providers"&gt;The workflow: 3 providers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-reduce-geocoding-costs-by-67/#the-results"&gt;The results&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-reduce-geocoding-costs-by-67/#session-1-google-maps-only"&gt;Session 1: Google Maps only&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-reduce-geocoding-costs-by-67/#session-2-ban-google-maps-here-cascading"&gt;Session 2: BAN + Google Maps + HERE (cascading)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-reduce-geocoding-costs-by-67/#yearly-cost-savings"&gt;Yearly cost savings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-reduce-geocoding-costs-by-67/#conclusion"&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/how-to-reduce-geocoding-costs-by-67/#where-to-go-from-here"&gt;Where to go from here&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h3 id="the-problem-choosing-between-cost-and-quality"&gt;The problem: choosing between cost and quality&lt;/h3&gt;
&lt;p&gt;You have probably faced this tradeoff: premium providers like Google Maps deliver excellent results, but they come at a price. Cheaper alternatives may leave some addresses unresolved.&lt;/p&gt;
&lt;p&gt;Most of the time, though, you do not actually need the premium option; addresses are clean and unambiguous, so any decent geocoder will do the job. The real challenge appears when your address data is messy: in those cases, you are forced to choose between paying for Google Maps to guarantee correct results, or accepting that a cheaper provider will miss some.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="the-solution-cascading-providers"&gt;The solution: cascading providers&lt;/h3&gt;
&lt;p&gt;Good news: there is a strategy that gives you the best of both worlds, &lt;strong&gt;cascading geocoders&lt;/strong&gt;. The principle is straightforward:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use an open-source or low-cost provider for ~90% of geocoding requests (the clean, unambiguous addresses).&lt;/li&gt;
&lt;li&gt;Use a premium geocoder (or several) to resolve the remaining ~10%.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This approach raises geocoding success rates while keeping costs down. In our case, it reduced costs by 67% and increased the share of successfully geocoded addresses by +3.7%. Here is how we did it.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="the-workflow-3-providers"&gt;The workflow: 3 providers&lt;/h3&gt;
&lt;p&gt;Our logistics client needed to geocode mostly residential addresses in France. France has an excellent government API for this purpose, the &lt;a href="https://coordable.co/blog/how-to-geocode-with-ban/"&gt;Base Adresse Nationale (BAN)&lt;/a&gt;, which covers French residential addresses very well, though it does not handle points of interest or addresses outside France. Many commercial providers actually use BAN data to improve their own results.&lt;/p&gt;
&lt;p&gt;The downside of BAN's API is that it is less robust at parsing and matching poorly formatted input. So we still needed to pair it with at least one commercial provider to ensure no addresses slip through. For that, we chose Google Maps. Finally, we added HERE as a second fallback because HERE also leverages BAN data, making it a strong option for the French addresses that Google could not resolve to rooftop level.&lt;/p&gt;
&lt;p&gt;Here is our strategy:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;French BAN&lt;/strong&gt;: confidence score &amp;gt; 0.75 required.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Maps API&lt;/strong&gt;: &lt;code&gt;ROOFTOP&lt;/code&gt; location type required (if not resolved in step 1).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HERE&lt;/strong&gt;: confidence score &amp;gt; 0.75 required (if not resolved in step 2).&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;
  &lt;img src="https://coordable.co/images/how-to-reduce-geocoding-costs/cascading-workflow-screenshot.png" alt="Screenshot of the cascading geocoding workflow: BAN first, then Google Maps, then HERE, each with its own quality rule."&gt;
  &lt;figcaption&gt;The three-provider cascade configured in Coordable: BAN → Google Maps → HERE, each step gated by a quality rule.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;We apply quality rules at each step to discard results that are not good enough. For French BAN and HERE, the confidence score reflects how closely the geocoder matched the input string. Although computed slightly differently across providers, both scores are a reliable way to filter out poor results. Setting the threshold at 0.75 is fairly strict, but the cascade makes this safe; any address rejected at one step simply moves to the next provider.&lt;/p&gt;
&lt;p&gt;Google Maps does not provide a confidence score, so instead we filter on the location type returned (&lt;code&gt;ROOFTOP&lt;/code&gt;, &lt;code&gt;APPROXIMATE&lt;/code&gt;, &lt;code&gt;GEOMETRIC_CENTER&lt;/code&gt;). For residential addresses, we require &lt;code&gt;ROOFTOP&lt;/code&gt; only, to ensure the coordinates are placed in front of the building rather than somewhere in the middle of the street.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="the-results"&gt;The results&lt;/h3&gt;
&lt;p&gt;To measure the impact, we ran two geocoding sessions on the same dataset and compared them:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Google Maps only&lt;/strong&gt;: the client's initial setup.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cascading strategy&lt;/strong&gt;: BAN → Google Maps → HERE.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The test dataset contains 1,000 residential addresses, mostly clean and well-formed. That is large enough to get a reliable picture of how this strategy performs at scale.&lt;/p&gt;
&lt;p&gt;In practice, the client geocodes about &lt;strong&gt;500,000 addresses per month&lt;/strong&gt;.&lt;/p&gt;
&lt;h4 id="session-1-google-maps-only"&gt;Session 1: Google Maps only&lt;/h4&gt;
&lt;figure&gt;
  &lt;img src="https://coordable.co/images/how-to-reduce-geocoding-costs/session1-google-screenshot.png" alt="Screenshot of the Google Maps only geocoding session: 94% valid results, $5 per 1,000."&gt;
  &lt;figcaption&gt;Session 1, Google Maps only: 940/1,000 addresses resolved at ROOFTOP level, at $5 per 1,000.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Results:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;94%&lt;/strong&gt; valid geocoding results (addresses resolved to &lt;code&gt;ROOFTOP&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Estimated cost: &lt;strong&gt;$5.00 per 1,000 addresses&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: these costs ignore the Google free quota, which is shared across all Google Maps products. Its effective value depends on each client's overall usage, so we exclude it for a fair comparison.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id="session-2-ban-google-maps-here-cascading"&gt;Session 2: BAN + Google Maps + HERE (cascading)&lt;/h4&gt;
&lt;figure&gt;
  &lt;img src="https://coordable.co/images/how-to-reduce-geocoding-costs/session2-cascading-providers-screenshot.png" alt="Screenshot of the cascading geocoding session: 97.7% valid results, $1.62 per 1,000."&gt;
  &lt;figcaption&gt;Session 2, Cascading strategy: 977/1,000 addresses resolved, at $1.62 per 1,000.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Results:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;97.7%&lt;/strong&gt; valid geocoding results, a &lt;strong&gt;+3.7% improvement&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Estimated cost: &lt;strong&gt;$1.62 per 1,000 addresses&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Provider breakdown: BAN 64.5% · Google Maps 31.7% · HERE 3.8%&lt;/p&gt;
&lt;p&gt;Using BAN means that 64.5% of addresses cost nothing to geocode. Our strict rules then sent 31.7% of addresses to Google Maps, and HERE handled the remaining 3.8%.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Total cost reduction: 67%, while improving geocoding quality.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="yearly-cost-savings"&gt;Yearly cost savings&lt;/h3&gt;
&lt;p&gt;At 500,000 addresses per month, the client was spending about $2,500/month on Google Maps alone. With the cascading strategy, that bill drops to $810/month, without any loss of quality; on the contrary.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Monthly cost&lt;/th&gt;
&lt;th&gt;Annual cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Google Maps only&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$2,500&lt;/td&gt;
&lt;td&gt;$30,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cascading (BAN + Google + HERE)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$810&lt;/td&gt;
&lt;td&gt;$9,720&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Savings&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$1,690&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$20,280&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;That is &lt;strong&gt;$20,280 saved per year&lt;/strong&gt;, while resolving +3.7% more addresses correctly.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="conclusion"&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;If you are paying Google Maps rates for every address, you are likely overpaying. This real-world example shows how large the gap can be: by routing the bulk of clean French addresses through the free BAN API, reserving Google Maps for harder cases, and using HERE as a final safety net, the client went from 94% to 97.7% geocoding success while paying 67% less.&lt;/p&gt;
&lt;p&gt;The key is combining the right providers in the right order, and enforcing quality rules at each step so only genuinely good results pass through. The result is a system that is both cheaper and more reliable than relying on a single provider.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://coordable.co" class="learn-more-btn"&gt;Set up cascading geocoding with Coordable&lt;/a&gt;&lt;/p&gt;

&lt;hr&gt;
&lt;h3 id="where-to-go-from-here"&gt;Where to go from here&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Learn more about the providers used in this workflow: &lt;a href="https://coordable.co/provider/google-maps-geocoding-api/"&gt;Google Maps Geocoding API&lt;/a&gt;, &lt;a href="https://coordable.co/provider/here-geocoding-api/"&gt;HERE Geocoding API&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;See how providers compare in France: &lt;a href="https://coordable.co/country-analysis/best-geocoding-providers-france/"&gt;Best geocoding providers for France&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Compare Google and HERE head-to-head: &lt;a href="https://coordable.co/comparison/google-vs-here-geocoding-2026/"&gt;Google vs HERE for geocoding&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;See current geocoding prices at a glance: &lt;a href="https://coordable.co/blog/geocoding-prices-2026/"&gt;Geocoding prices in 2026&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</description><category>2026</category><category>api</category><category>geocoding</category><category>pricing</category><category>providers</category><guid>https://coordable.co/blog/how-to-reduce-geocoding-costs-by-67/</guid><pubDate>Sun, 08 Mar 2026 10:00:00 GMT</pubDate></item><item><title>HERE price increase by 6% in 2026</title><link>https://coordable.co/blog/here-geocoding-price-increase-2026/</link><dc:creator>François Andrieux</dc:creator><description>&lt;p&gt;HERE Technologies is updating its pricing from April 2026. This post summarizes what matters for geocoding users: effective date, what changes, and who is affected.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://coordable.co/images/providers-logo/here-logo-large.png" alt="HERE Technologies logo" width="200" class="d-block mx-auto"&gt;&lt;/p&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/here-geocoding-price-increase-2026/#what-here-announced"&gt;What HERE announced&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/here-geocoding-price-increase-2026/#what-this-means-for-you"&gt;What this means for you&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/here-geocoding-price-increase-2026/#where-to-go-from-here"&gt;Where to go from here&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h3 id="what-here-announced"&gt;What HERE announced&lt;/h3&gt;
&lt;p&gt;From April 1, 2026, the price of the &lt;strong&gt;HERE Base Plan&lt;/strong&gt; will increase by &lt;strong&gt;6%&lt;/strong&gt; for new contracts, renewals, and extensions. Existing contracts remain unchanged until renewal or extension.&lt;/p&gt;
&lt;p&gt;HERE Technologies communicated the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The prices of &lt;strong&gt;all 35 HERE Location Services and Data IO&lt;/strong&gt; using the pay-per-transaction model will increase by &lt;strong&gt;6%&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;This price increase applies to &lt;strong&gt;all new subscriptions and (auto-)renewals from April 1, 2026&lt;/strong&gt; onwards.&lt;/li&gt;
&lt;li&gt;The price of the &lt;strong&gt;Developer technical support plan&lt;/strong&gt; remains unchanged.&lt;/li&gt;
&lt;li&gt;These pricing updates will be reflected in all future contracts and invoices from April 1, 2026 onwards.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="what-this-means-for-you"&gt;What this means for you&lt;/h3&gt;
&lt;p&gt;If you sign a new contract or renew on or after April 1, 2026, you will see the new 6% pricing. For coverage, rate limits, licensing, and current pricing details, see our &lt;a href="https://coordable.co/provider/here-geocoding-api/"&gt;HERE Geocoding API&lt;/a&gt; guide.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="where-to-go-from-here"&gt;Where to go from here&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://coordable.co/provider/here-geocoding-api/"&gt;HERE Geocoding API&lt;/a&gt; — coverage, rate limits, and licensing.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/geocoding-prices-2026/"&gt;Geocoding prices in 2026&lt;/a&gt; — compare HERE with other providers.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/comparison/google-vs-here-geocoding-2026/"&gt;Google vs HERE for geocoding&lt;/a&gt; — head-to-head comparison.&lt;/li&gt;
&lt;/ul&gt;</description><category>2026</category><category>api</category><category>geocoding</category><category>here</category><category>pricing</category><guid>https://coordable.co/blog/here-geocoding-price-increase-2026/</guid><pubDate>Fri, 06 Mar 2026 12:00:00 GMT</pubDate></item><item><title>Geocoding prices in 2026</title><link>https://coordable.co/blog/geocoding-prices-2026/</link><dc:creator>François Andrieux</dc:creator><description>&lt;p&gt;Here’s a clear overview of what the main geocoding services cost in 2026, and whether anything changed recently. Use the table and the &lt;strong&gt;interactive chart&lt;/strong&gt; below to compare prices at a glance and to simulate your costs. 🙂&lt;/p&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/geocoding-prices-2026/#pricing-overview"&gt;Pricing overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/geocoding-prices-2026/#compare-costs-at-your-volume"&gt;Compare costs at your volume&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/geocoding-prices-2026/#did-prices-change"&gt;Did prices change?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/geocoding-prices-2026/#how-to-reduce-geocoding-cost"&gt;How to reduce geocoding cost&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/geocoding-prices-2026/#price-is-not-everything"&gt;Price is not everything&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/blog/geocoding-prices-2026/#where-to-go-from-here"&gt;Where to go from here&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h3 id="pricing-overview"&gt;Pricing overview&lt;/h3&gt;
&lt;p&gt;Roughly what you pay after the free tier (per 1,000 requests, in USD). Free tiers and volume discounts vary; check each provider for exact terms.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Free tier&lt;/th&gt;
&lt;th&gt;Price per 1,000 (after free)&lt;/th&gt;
&lt;th&gt;Note&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Google Maps&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;10,000/month&lt;/td&gt;
&lt;td&gt;$5.00&lt;/td&gt;
&lt;td&gt;Volume discounts; see &lt;a href="https://coordable.co/blog/geocoding-prices-2026/#did-prices-change"&gt;March 2025 changes&lt;/a&gt; below.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;HERE&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;30,000/month&lt;/td&gt;
&lt;td&gt;$0.83&lt;/td&gt;
&lt;td&gt;Volume discounts; &lt;a href="https://coordable.co/blog/geocoding-prices-2026/#did-prices-change"&gt;6% increase from April 2026&lt;/a&gt; for new contracts and renewals.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TomTom&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2,500/day (~75k/month)&lt;/td&gt;
&lt;td&gt;$0.75&lt;/td&gt;
&lt;td&gt;Volume discounts.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mapbox (Temporary)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;100,000/month&lt;/td&gt;
&lt;td&gt;$0.75&lt;/td&gt;
&lt;td&gt;Temporary results only; no long-term storage.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mapbox (Permanent)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;$5.00&lt;/td&gt;
&lt;td&gt;Allows indefinite storage of results.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OpenCage&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2,500/day (~75k/month)&lt;/td&gt;
&lt;td&gt;from ~$0.15–0.17&lt;/td&gt;
&lt;td&gt;Subscription-based; volume discounts. Permissive storage.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Nominatim (OSM)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Public API rate-limited&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Self-hosting has infra costs.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Many countries also have &lt;strong&gt;free or low-cost official APIs&lt;/strong&gt; (e.g. &lt;a href="https://coordable.co/blog/how-to-geocode-with-ban/"&gt;France's BAN&lt;/a&gt;, Spain's CartoCiudad, UK's OS Places under certain schemes). For local addresses, check our country-specific comparisons linked at the end.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="compare-costs-at-your-volume"&gt;Compare costs at your volume&lt;/h3&gt;
&lt;p&gt;The difficulty is that most providers have different pricing tiers and different free tiers. So you need to know exactly how many addresses you need to geocode to know which provider is the cheapest. Also, prices typically decrease as volume increases, so your per-request cost depends heavily on your total usage.&lt;/p&gt;
&lt;p&gt;You can simulate your costs with the &lt;strong&gt;interactive chart&lt;/strong&gt; below. Just select the number of addresses you need to geocode and the chart will show you the cost per provider!&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div id="pricing_chart_main"&gt;&lt;/div&gt;
&lt;script&gt;
(function() {
  const providers = ["Google", "HERE", "TomTom", "OpenCage", "Mapbox (Temp)", "Mapbox (Perm)", "Nominatim"];
  if (typeof includePricingChart === "function") {
    includePricingChart("#pricing_chart_main", providers);
  }
})();
&lt;/script&gt;
&lt;hr&gt;
&lt;h3 id="did-prices-change"&gt;Did prices change?&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Google (March 2025):&lt;/strong&gt; Google replaced the previous $200/month credit with &lt;strong&gt;per-SKU free usage&lt;/strong&gt; (e.g. around 10,000 free billable events per month for the Geocoding API). Volume discount tiers were expanded for high usage. So the &lt;em&gt;effective&lt;/em&gt; free tier for geocoding is lower than before, but heavy users can see lower marginal costs at scale. Details: &lt;a href="https://coordable.co/provider/google-maps-geocoding-api/"&gt;Google Maps Geocoding API guide&lt;/a&gt; and &lt;a href="https://developers.google.com/maps/billing-and-pricing/march-2025"&gt;Google Maps Platform March 2025 changes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HERE (April 2026):&lt;/strong&gt; From April 1, 2026, the HERE Base Plan and all pay-per-transaction Location Services and Data IO &lt;strong&gt;increase by 6%&lt;/strong&gt; for new contracts, renewals, and extensions. Existing contracts are unchanged until renewal. See &lt;a href="https://coordable.co/blog/here-geocoding-price-increase-2026/"&gt;HERE price increase by 6% in 2026&lt;/a&gt; for details.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Other major providers:&lt;/strong&gt; TomTom, Mapbox, and OpenCage have kept their published pricing stable into 2026. Our source dates in the repo are October 2025 / January 2026; always confirm current prices on each provider’s site before committing.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="how-to-reduce-geocoding-cost"&gt;How to reduce geocoding cost&lt;/h3&gt;
&lt;p&gt;Relying on a single premium provider (e.g. Google at $5 per 1,000 requests) can become very expensive at scale. A proven way to &lt;strong&gt;cut costs without sacrificing quality&lt;/strong&gt; is &lt;strong&gt;cascading geocoders&lt;/strong&gt;: use several providers in a defined order, and only fall back to the next when the current one fails or does not meet your criteria.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is cascading?&lt;/strong&gt; You define an ordered list of providers (e.g. OpenStreetMap or OpenCage → HERE → Google). For each address, you try the first provider; if that fails or the result does not pass validation, you automatically try the next one, and so on. Cheaper or free providers handle the bulk of easy addresses; premium providers are used only for the harder cases. The result: &lt;strong&gt;higher success rates&lt;/strong&gt; (often 98–99% instead of ~90% with one provider) and &lt;strong&gt;lower total cost&lt;/strong&gt;, because most requests are served by the least expensive option.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://coordable.co/" class="learn-more-btn"&gt;Reduce your costs with Coordable cascading geocoding&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The diagram below illustrates the idea: send 100% of requests to a free or low-cost provider first (e.g. OSM); only the unresolved share (e.g. 10%) goes to a mid-tier provider (e.g. HERE); and only the remainder (e.g. 4%) hits the premium provider (e.g. Google). You still reach a very high overall geocoding rate (e.g. 99.9%) while paying the premium rate for a small fraction of traffic.&lt;/p&gt;
&lt;figure&gt;
  &lt;img src="https://coordable.co/images/geocoding-cascade.png" alt="Cascading geocoding: 100% of requests go to OSM first (90% resolved), then 10% to HERE (6% more resolved), then 4% to Google (3.9% resolved); total 99.9% geocoding rate."&gt;
  &lt;figcaption&gt;Cascading geocoders: prioritize cheap or free providers, fall back to premium only when needed. Quality and cost scale with each step.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;You can implement cascading in your own code (call provider A, then B on failure, etc.) or do it easily with &lt;a href="https://coordable.co"&gt;Coordable&lt;/a&gt;: choose your providers, define the cascade order and fallback rules, and optionally validate results so only good coordinates reach your database. Either way, the principle is the same: &lt;strong&gt;prioritize cheaper solutions and only fall back to premium when it is truly necessary.&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://coordable.co"&gt;Try Coordable&lt;/a&gt;&lt;/strong&gt; to easily implement cascading geocoding for your business.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="price-is-not-everything"&gt;Price is not everything&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Pricing does not always reflect quality.&lt;/strong&gt; The cheapest option is not necessarily the worst, and some geocoders can match or beat large commercial providers depending on region and data type (addresses vs POIs, local vs global). To see how providers actually perform where you operate, check the best geocoding provider for your country. We have in-depth comparisons for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://coordable.co/country-analysis/best-geocoding-providers-france/"&gt;Best geocoding providers for France&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/country-analysis/best-geocoding-providers-germany/"&gt;Best geocoding providers for Germany&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/country-analysis/best-geocoding-providers-italy/"&gt;Best geocoding providers for Italy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/country-analysis/best-geocoding-providers-luxembourg/"&gt;Best geocoding providers for Luxembourg&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/country-analysis/best-geocoding-providers-portugal/"&gt;Best geocoding providers for Portugal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coordable.co/country-analysis/best-geocoding-providers-spain/"&gt;Best geocoding providers for Spain&lt;/a&gt;&lt;/li&gt;
&lt;li&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;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id="where-to-go-from-here"&gt;Where to go from here&lt;/h3&gt;
&lt;p&gt;For more detail on a single provider (coverage, rate limits, licensing), see our guides: &lt;a href="https://coordable.co/provider/google-maps-geocoding-api/"&gt;Google Maps Geocoding API&lt;/a&gt;, &lt;a href="https://coordable.co/provider/here-geocoding-api/"&gt;HERE Geocoding API&lt;/a&gt;, &lt;a href="https://coordable.co/provider/mapbox-geocoding-api/"&gt;Mapbox Geocoding API&lt;/a&gt;. For a head-to-head in 2026, see &lt;a href="https://coordable.co/comparison/google-vs-here-geocoding-2026/"&gt;Google vs HERE for geocoding&lt;/a&gt;.&lt;/p&gt;</description><category>2026</category><category>api</category><category>geocoding</category><category>pricing</category><category>providers</category><guid>https://coordable.co/blog/geocoding-prices-2026/</guid><pubDate>Fri, 06 Mar 2026 10:00:00 GMT</pubDate></item><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></channel></rss>