
# Code Libraries / SDKs

## OpenCage Geocoding API via your favorite language

 ![Python](https://assets.opencagedata.com/assets/langlogos/python-39084ec88c92358a32f7f03e359f8532c989ba3b49db0f70e3a9f0b70bda9a89.svg)

Python

[Library](https://pypi.org/project/opencage/) [Tutorial](https://opencagedata.com/tutorials/geocode-in-python)

 ![Node.js](https://assets.opencagedata.com/assets/langlogos/nodejs-fbb6400463ed5c54ac0dbca88717b92bee9fc7f38ecd6c9c2bbcd4761e8bbe4d.svg)

Node.js

[Library](https://github.com/tsamaya/opencage-api-client) [Tutorial](https://opencagedata.com/tutorials/geocode-in-nodejs)

 ![Java](https://assets.opencagedata.com/assets/langlogos/java-c95201110ec527bd603abd795c17ba1b38591327cddcf08ab28cfca94b2f59bd.svg)

Java

[Library](https://github.com/OpenCageData/jopencage) [Tutorial](https://opencagedata.com/tutorials/geocode-in-java)

 ![PHP](https://assets.opencagedata.com/assets/langlogos/php-78c2ef81c729863796775fc6895522db91baceb11708013005366b9a9f361574.svg)

PHP

[Library](https://github.com/opencagedata/php-opencage-geocode) [Tutorial](https://opencagedata.com/tutorials/geocode-in-php)

 ![Ruby](https://assets.opencagedata.com/assets/langlogos/ruby-a5b6fdfcf5610908c789e11a2f1caf5024880544e7c4a411f563a6be778c4ef6.png)

Ruby

[Library](https://github.com/opencagedata/ruby-opencage-geocoder) [Tutorial](https://opencagedata.com/tutorials/geocode-in-ruby)

 ![Perl](https://assets.opencagedata.com/assets/langlogos/perl-c1109b53852bbef9e4498c2b5fe0f51958b0cbd8af8c448a4e19c1b0614a96a8.svg)

Perl

[Library](https://metacpan.org/pod/Geo::Coder::OpenCage) [Tutorial](https://opencagedata.com/tutorials/geocode-in-perl)

## Full list of geocoding SDKs (40+ languages and frameworks)

 ![AI Agent Skills](https://assets.opencagedata.com/assets/langlogos/aiskills-836f94faaee29d5e012ea474f60fe44733f8831461e28e5bb1365ca1306f3536.svg)

AI Agent Skills

- [markdown for coding agents](https://github.com/OpenCageData/opencage-skills) by OpenCage  

 ![AngularJS](https://assets.opencagedata.com/assets/langlogos/angularjs-8d02a69fe49424d9af344250e014d98a7882ee1b8461952b428697995abb8dfd.svg)

AngularJS

- [opencage-angular](https://www.npmjs.com/package/@digiphilo/opencage-angular) by Rome Stone

 ![AWS Lambda](https://assets.opencagedata.com/assets/langlogos/aws-lambda-7a019b19aa5b7af9dca2f1f1bc4480c6be45e6e6b26d307452b822241e2ba1c7.svg)

AWS Lambda

- [aws-lambda-opencage-geocoder](https://github.com/tsamaya/aws-lambda-opencage-geocoder) by Arnaud Ferrand

 ![bash](https://assets.opencagedata.com/assets/langlogos/terminal-0813df7c16116bbc9c83ddf973c7951fa4102490eaf78492aacc61a5968d225d.svg)

bash

- [opencage-shell](https://github.com/geonot/opencage-shell) by Rome Stone

 ![C](https://assets.opencagedata.com/assets/langlogos/c-fa8a5644803e57b311ffb22d87586c3bd7c54eb10a6b94976021cf355011bc52.svg)

C

- [c-ocgeo](https://github.com/sgsfak/c-ocgeo) by Stelios Sfakianakis
- [revgeod](https://github.com/jpmens/revgeod) by JP Mens

 ![C++](https://assets.opencagedata.com/assets/langlogos/cpp-1af7ad5335289958dac9c3132f91fbbfec6d376952b8b549de53544e1de035fd.svg)

C++

- [cpp-opencage-geocoder](https://github.com/karnival/cpp-opencage-geocoder) by David Owen

 ![Clojure](https://assets.opencagedata.com/assets/langlogos/clojure-2b5ec5eae5a46006dcac9371587c3225fff42566445167bd3003f8d5eb29f3e0.svg)

Clojure

- [clj-ocgeo](https://clojars.org/clj-ocgeo) by Stelios Sfakianakis

 ![Cloudflare Workers](https://assets.opencagedata.com/assets/langlogos/cloudflare-workers-d6abd2905d31e996dbf7fbcaf5a2d37ae6d9f9bbd690eb55d15d207783818b82.svg)

Cloudflare Workers

- [opencage-geocoder-cfworker](https://github.com/tsamaya/opencage-geocoder-cfworker) by Arnaud Ferrand

 ![ColdFusion (CFML)](https://assets.opencagedata.com/assets/langlogos/coldfusion-fd228f10a913ab4f2a0a5679efe4f56808b1dc14a821daa5f846800221fe0fb7.svg)

ColdFusion (CFML)

- [OpenCageCFC](https://github.com/GaryStanton/OpenCageCFC) by Gary Stanton

 ![Command Line Interface (CLI)](https://assets.opencagedata.com/assets/langlogos/terminal-0813df7c16116bbc9c83ddf973c7951fa4102490eaf78492aacc61a5968d225d.svg)

Command Line Interface (CLI)

- [opencage-cli](https://pypi.org/project/opencage-cli/) by OpenCage  

[Tutorial / code example](https://opencagedata.com/tutorials/geocode-commandline)

 ![Dart](https://assets.opencagedata.com/assets/langlogos/dart-615d987d0da6c19e294f5fa072e5f49d13a789615bde7460c2b118c8b48d7e6a.svg)

Dart

- [opencage\_geocoder](https://pub.dartlang.org/packages/opencage_geocoder) by Aloïs Deniel

 ![Datasette](https://assets.opencagedata.com/assets/langlogos/datasette-70d881f1072609b206a30bcba3454ff301cd6ee731f1041fc96ae3d272532c26.png)

Datasette

- [datasette-enrichments-opencage](https://datasette.io/plugins/datasette-enrichments-opencage) by Simon Willison

 ![Elixir](https://assets.opencagedata.com/assets/langlogos/elixir-d11fb9b87a2254cfee6c47f2e1993bd680bcb8f8c1d55cb6c8a342d2dab4d807.svg)

Elixir

- [open-cagex](https://github.com/dsantosmerino/open-cagex) by David Santos Merino

 ![Erlang](https://assets.opencagedata.com/assets/langlogos/erlang-ef42af411ea6f7ff846ef87895434c127196a72d8a1238a4fae2f51ba8f927f1.svg)

Erlang

- [erlgeo](https://github.com/uxeon/erlgeo) by UXEON Sp

 ![GatsbyJS](https://assets.opencagedata.com/assets/langlogos/gatsby-dbaaa4cb662859e19fdfca71062898ad28b582b7b795f40b66b3eabb6bb6450d.svg)

GatsbyJS

- [gatsby-transformer-opencage-geocoder](https://github.com/andrewl/gatsby-transformer-opencage-geocoder) by Andrew Larcombe

 ![Go](https://assets.opencagedata.com/assets/langlogos/go-b632abc9f5c952f30c426708ae94e078094fa005be52ea16381841135e59c89e.svg)

Go

- [opencage](https://github.com/alexliesenfeld/opencage) by Alexander Liesenfeld
- [opencagedata](https://github.com/rubenv/opencagedata) by Ruben Vermeersch

 ![Google Apps Script](https://assets.opencagedata.com/assets/langlogos/googledocs-f55a7fc53db7b08b061cff6bb1217a24559342950e1b28e5a08e15f8a094b5d7.svg)

Google Apps Script

- [opencage-gas](https://github.com/geonot/opencage-gas) by Rome Stone

 ![Haskell](https://assets.opencagedata.com/assets/langlogos/haskell-9344c08bf6315f41976a2b47cb07ea603e69377739b8009e92b3bc471f06ffa6.svg)

Haskell

- [Haskell-Geocoder-OpenCage](https://hackage.haskell.org/package/GeocoderOpenCage) by Jürgen Hahn

 ![iOS / Swift](https://assets.opencagedata.com/assets/langlogos/swift-8a807f29e62aae0bd67a7c6af0cfef3fa2f0cd8addde03f0b1a77859bbac7882.svg)

iOS / Swift

- [OpenCageSwift](https://github.com/workingDog/OpenCageSwift) by workingDog
- [OpenCage iOS SDK](https://cocoapods.org/pods/OpenCageSDK) by Francis Beasley

 ![Java](https://assets.opencagedata.com/assets/langlogos/java-c95201110ec527bd603abd795c17ba1b38591327cddcf08ab28cfca94b2f59bd.svg)

Java

- [jopencage](https://github.com/OpenCageData/jopencage) by OpenCage  

[Tutorial / code example](https://opencagedata.com/tutorials/geocode-in-java)

 ![Julia](https://assets.opencagedata.com/assets/langlogos/julia-093d8db44e4c4af104b04da91e6e28231585897a6eb51a885753833c20caa553.svg)

Julia

- [OpenCage](https://github.com/geonot/OpenCage.jl) by Rome Stone

 ![Kotlin / Android](https://assets.opencagedata.com/assets/langlogos/kotlin-3d5877e21d7263775793285c73302c978217553ec5a988b21ca590be6c5ada9a.svg)

Kotlin / Android

- [kotlin-opencage-client](https://github.com/jillesvangurp/kotlin-opencage-client) by Jilles van Gurp

 ![Leaflet Maps](https://assets.opencagedata.com/assets/langlogos/leaflet-854a8e531dbd19fd85936d6bbc7cc4fee4f0037bda57327d79c4460f50c23f0f.jpg)

Leaflet Maps

- [Leaflet Geocoding plugin](https://github.com/opencagedata/leaflet-opencage-geocoding) by OpenCage  

[Tutorial / code example](https://opencagedata.com/tutorials/geocode-in-leaflet)

 ![Lua](https://assets.opencagedata.com/assets/langlogos/lua-2a902ba4b171572b263ed28165daf7f72cef94d060848ca0aea642bca5ddc175.svg)

Lua

- [lua-opencage-geocoder](https://luarocks.org/modules/nmdguerreiro/lua-opencage-geocoder) by Nuno Guerreiro
- [lua-resty-opencage-geocoder](https://github.com/nmdguerreiro/lua-resty-opencage-geocoder) by Nuno Guerreiro

 ![MATLAB](https://assets.opencagedata.com/assets/langlogos/matlab-7691f23affae36af0cb9f135d1821f3f791ca276e5df58e6fddaa4e3ef52e78a.svg)

MATLAB

- [opencage-matlab](https://github.com/OpenCageData/opencage-matlab) by Alexander Dentler

[Tutorial / code example](https://opencagedata.com/tutorials/geocode-in-matlab)

 ![MCP](https://assets.opencagedata.com/assets/langlogos/mcp-a08595855b1252681bb30b9b11d0238f3128ed9965fcd651f269fe897b286124.svg)

MCP

- [OpenCage geocoding MCP server](https://github.com/OpenCageData/opencage-geocoding-mcp) by OpenCage  

[Tutorial / code example](https://opencagedata.com/tutorials/geocode-inside-an-llm-via-mcp)

 ![.NET](https://assets.opencagedata.com/assets/langlogos/dotnet-bc16dbf19c4dc60c5b0aa9b9319027745aabb028992589d78d1d2240dfeca4a2.svg)

.NET

- [dotnet-opencage-geocode](https://github.com/gingemonster/dotnet-opencage-geocode) by Brian Norman

 ![Neo4j](https://assets.opencagedata.com/assets/langlogos/neo4j-1af3aa0cdb678472e60539296081092ba4e970bc5543d5ce0eee960eeeeaba94.svg)

Neo4j

- [APOC geocode procedure](https://github.com/neo4j-contrib/neo4j-apoc-procedures) by neo4j-contrib

 ![Node.js](https://assets.opencagedata.com/assets/langlogos/nodejs-fbb6400463ed5c54ac0dbca88717b92bee9fc7f38ecd6c9c2bbcd4761e8bbe4d.svg)

Node.js

- [opencage-api-client](https://github.com/tsamaya/opencage-api-client) by Arnaud Ferrand
- [opencage geocoder client](https://github.com/pearlshare/opencage-geocoder-client) by Pearlshare

[Tutorial / code example](https://opencagedata.com/tutorials/geocode-in-nodejs)

 ![OCaml](https://assets.opencagedata.com/assets/langlogos/ocaml-8cdc57ec1b282fafbc668efa43bc9db5465e5195d5790e717a41ac669f612698.svg)

OCaml

- [opencage](https://ocaml.org/p/opencage/latest) by Rome Stone

 ![OpenLayers](https://assets.opencagedata.com/assets/langlogos/openlayers-b3d2bcea8a08b8c795fc3f6446ab299919862f723d89ef369607ab4f9f0fe251.svg)

OpenLayers

- [ol-geocoder](https://github.com/jonataswalker/ol-geocoder) by Jonatas Walker

 ![Perl](https://assets.opencagedata.com/assets/langlogos/perl-c1109b53852bbef9e4498c2b5fe0f51958b0cbd8af8c448a4e19c1b0614a96a8.svg)

Perl

- [Geo::Coder::OpenCage (Perl 5)](https://metacpan.org/pod/Geo::Coder::OpenCage) by OpenCage  

[Tutorial / code example](https://opencagedata.com/tutorials/geocode-in-perl)

 ![PHP](https://assets.opencagedata.com/assets/langlogos/php-78c2ef81c729863796775fc6895522db91baceb11708013005366b9a9f361574.svg)

PHP

- [php-opencage-geocode](https://github.com/opencagedata/php-opencage-geocode) by OpenCage  
- [Geocoder-PHP](https://geocoder-php.org/Geocoder/) by William Durand

[Tutorial / code example](https://opencagedata.com/tutorials/geocode-in-php)

 ![PostgreSQL](https://assets.opencagedata.com/assets/langlogos/postgresql-dbad749b223e9e6fb593d81f2352fc842fa98ee8d786db4a89c2314a2e50686f.svg)

PostgreSQL

- [ocgeo\_fdw (foreign data wrapper)](https://github.com/sgsfak/ocgeo_fdw) by Stelios Sfakianakis

 ![PowerShell](https://assets.opencagedata.com/assets/langlogos/powershell-092f7d681db0d53df45b47ec01543ce95f4f4ddba76824db0e24cc0458e1758e.svg)

PowerShell

- [OpenCage](https://www.powershellgallery.com/packages/OpenCage/0.2.0) by Allison Ragas

 ![Python](https://assets.opencagedata.com/assets/langlogos/python-39084ec88c92358a32f7f03e359f8532c989ba3b49db0f70e3a9f0b70bda9a89.svg)

Python

- [Python](https://pypi.org/project/opencage/) by OpenCage  
- [Python Geocoder](https://github.com/DenisCarriere/geocoder) by DenisCarriere

[Tutorial / code example](https://opencagedata.com/tutorials/geocode-in-python)

 ![QGIS](https://assets.opencagedata.com/assets/langlogos/qgis-56bb09b169346c9df587d000c94ea9a4ef9519dd7fbaa4d49e182dec184b8aa6.png)

QGIS

- [OpenCage Geocoder QGIS plugin](https://plugins.qgis.org/plugins/opencage_geocoder/) by Joana Simoes

[Tutorial / code example](https://opencagedata.com/tutorials/geocode-in-qgis)

 ![R](https://assets.opencagedata.com/assets/langlogos/rlang-7520d70d659c13662676ffa82b972bb44fb83bbf051e1190362e1436d40a2a1c.svg)

R

- [opencage](https://docs.ropensci.org/opencage/) by Daniel Possenriede / rOpenSci
- [tidygeocoder](https://jessecambon.github.io/tidygeocoder/index.html) by Jesse Cambon

[Tutorial / code example](https://opencagedata.com/tutorials/geocode-in-r)

 ![Racket](https://assets.opencagedata.com/assets/langlogos/racket-097e4674ac6faedd0b2cc7a985c93feb4b7852c1c4ed3990960d7b77a762a48c.svg)

Racket

- [opencage](https://pkgs.racket-lang.org/package/opencage) by Rome Stone

 ![Raku](https://assets.opencagedata.com/assets/langlogos/raku-b62aa367d2ebe3d5c672b9442f7b139a8ad1c6b58c1a430545d806da13f480e5.svg)

Raku

- [Geo-Coder-OpenCage](https://github.com/tadzik/Geo-Coder-OpenCage) by Tadeusz Sośnierz

 ![ReactJS](https://assets.opencagedata.com/assets/langlogos/react-630fe544b8e5213f37093e5852f20915fd663276bfb5d2cd323bff47a34b3146.svg)

ReactJS

- [react-leaflet-opencage](https://github.com/tsamaya/react-leaflet-opencage) by Arnaud Ferrand

 ![React Native](https://assets.opencagedata.com/assets/langlogos/react-630fe544b8e5213f37093e5852f20915fd663276bfb5d2cd323bff47a34b3146.svg)

React Native

- [opencage-react-native](https://github.com/tsamaya/opencage-react-native) by Arnaud Ferrand

 ![Ruby](https://assets.opencagedata.com/assets/langlogos/ruby-a5b6fdfcf5610908c789e11a2f1caf5024880544e7c4a411f563a6be778c4ef6.png)

Ruby

- [opencage-geocoder](https://github.com/opencagedata/ruby-opencage-geocoder) by OpenCage  
- [RubyGeocoder](https://www.rubygeocoder.com/) by Alex Reisner
- [geokit](https://github.com/geokit/geokit)

[Tutorial / code example](https://opencagedata.com/tutorials/geocode-in-ruby)

 ![Rust](https://assets.opencagedata.com/assets/langlogos/rust-28185c0feac112266f5861be255bdc0f89e6e6da0a2f4e8b07ad380260667716.svg)

Rust

- [rust-geocoding](https://crates.io/crates/geocoding) by Blake Grotewald and Stephan Hügel

[Tutorial / code example](https://opencagedata.com/tutorials/geocode-in-rust)

 ![Scala](https://assets.opencagedata.com/assets/langlogos/scala-4911df9b20965cf6adc89ec2bc280472bf423363686454e9719cbf68f4cd34c5.svg)

Scala

- [scala-opencage-geocoder](https://github.com/opencagedata/scala-opencage-geocoder) by Nuno Guerreiro

 ![SQLite](https://assets.opencagedata.com/assets/langlogos/sqlite-a7500a798a11faaf081f08626f55c2dc094092cf8d04713dafc72345036687b2.svg)

SQLite

- [geocode-sqlite](https://github.com/eyeseast/geocode-sqlite) by Chris Amico

 ![Stata](https://assets.opencagedata.com/assets/langlogos/stata-5726645db017b51490665cc89a384af92b2bed641e19ec09152a5e1e1fefe412.svg)

Stata

- [opencagegeo Stata module](https://econpapers.repec.org/software/bocbocode/S458155.htm) by Lars Zeigermann

[Tutorial / code example](https://opencagedata.com/tutorials/geocode-in-stata)

 ![Svelte](https://assets.opencagedata.com/assets/langlogos/svelte-17829b80d0681547dbbf76ee6f04228766d0e5ace7aa80bb9c8434d51b1a7ea7.svg)

Svelte

- [opencage-svelte](https://www.npmjs.com/package/@digiphilo/opencage-svelte) by Rome Stone

 ![Typescript](https://assets.opencagedata.com/assets/langlogos/typescript-cfdb37c898ac1684b6dd70b5eddc9e4383486188eb9be037ba91af7904443eaf.svg)

Typescript

- [opencage-react-native](https://github.com/tsamaya/opencage-react-native) by Arnaud Ferrand

 ![Vue](https://assets.opencagedata.com/assets/langlogos/vue-222ae0da8be3a0651dba57f343f9c30232833ec01de857bbe13aaa8af0743edc.svg)

Vue

- [opencage-vue](https://www.npmjs.com/package/@digiphilo/opencage-vue) by Rome Stone

 ![Zig](https://assets.opencagedata.com/assets/langlogos/zig-fe67792354809b61ba30316e0353ef750287148291b7ecc8f84dfade91445ccd.svg)

Zig

- [zig-opencage](https://github.com/geonot/zig-opencage) by Rome Stone

= Written and supported by OpenCage.

Let us know if you didn't find your favorite language or framework.

Even better, write an SDK, and we will gladly feature it here. We prepared a list of [SDK guidelines](https://opencagedata.com/guides/how-to-write-an-sdk-for-the-opencage-api) to avoid common pitfalls.

