# geolith docs > Documentation for geolith: the Search geocoding API (below) and the builder that makes PMTiles and .glx files from OpenStreetMap and Overture Maps. Hosted: https://api.geolith.app, key as `?api_key=YOUR_API_KEY` or `Authorization: Bearer YOUR_API_KEY` (sign up at https://console.geolith.app/signup; Free plan 100,000 requests a month). Self-hosted: one Rust binary and one .glx file, no database. Responses are GeoJSON FeatureCollections with [longitude, latitude] coordinates. Quick facts for writing code: - Search: `GET https://api.geolith.app/v1/search?text=eiffel%20tower&size=1&api_key=YOUR_API_KEY` - Autocomplete: `GET https://api.geolith.app/v1/autocomplete?text=shaniwar%20wa&focus.point.lat=18.52&focus.point.lon=73.86&api_key=YOUR_API_KEY` - Reverse: `GET https://api.geolith.app/v1/reverse?point.lat=18.922&point.lon=72.8347&api_key=YOUR_API_KEY` - Place with outline: `GET https://api.geolith.app/v1/place?ids=geolith:venue:4611686018432401268&geometry=true&api_key=YOUR_API_KEY` (Polygon/MultiPolygon when the place has one) - Coverage: worldwide (planet file, 678,043,458 places). - Read `features[i].properties.label` and `features[i].geometry.coordinates` ([lon, lat]). - Errors: 401 `missing_api_key` / `invalid_api_key`, 403 `origin_not_allowed`, 429 `rate_limited` / `quota_exceeded`, 400 with `geocoding.errors`. - Attribution required: © OpenStreetMap contributors (ODbL), Overture Maps Foundation - OpenAPI 3.1: https://docs.geolith.app/search/openapi.json - Agent skills (SKILL.md files for coding agents: calling the API, MapLibre search box, migrating from Google, Mapbox, Nominatim, Pelias or Photon): https://docs.geolith.app/.well-known/agent-skills/index.json - MCP server (streamable HTTP): https://docs.geolith.app/mcp (the same server as https://api.geolith.app/mcp) with tools search, autocomplete, structured_search, reverse and place. Auth: `Authorization: Bearer YOUR_API_KEY` or an OAuth token from https://console.geolith.app (scope geocode, resource https://docs.geolith.app). Card: https://docs.geolith.app/.well-known/mcp/server-card.json - A2A agent: https://api.geolith.app/a2a (JSON-RPC); card: https://api.geolith.app/.well-known/agent-card.json - Agent registration (OAuth 2.1 with dynamic client registration): https://console.geolith.app/auth.md - WebMCP: every page registers the tools geocode_search, geocode_autocomplete, reverse_geocode and place_lookup for in-browser agents. ## Search: hosted API - [Hosted API overview](https://docs.geolith.app/search/hosted/overview.md): geolith cloud: the geocoding API at https://api.geolith.app. Base URL, authentication, endpoints, response shape, plans and attribution. - [curl](https://docs.geolith.app/search/hosted/curl.md): Every api.geolith.app endpoint as a curl command: search, autocomplete, structured search, reverse, nearby, place, TileJSON, tiles and health. - [MapLibre](https://docs.geolith.app/search/hosted/maplibre.md): A MapLibre GL JS 6 map with a geolith search box: autocomplete near the map centre, markers for results, and the place outline from /v1/place. - [Quickstart](https://docs.geolith.app/search/hosted/quickstart.md): Send your first request to api.geolith.app in a minute: get a key, call /v1/search with curl, JavaScript or Python, and read the GeoJSON. - [API keys](https://docs.geolith.app/search/hosted/keys.md): Secret keys for servers, publishable keys for browsers locked to allowed origins, and how to send a key to api.geolith.app. - [Quotas and errors](https://docs.geolith.app/search/hosted/quotas-and-errors.md): Monthly quotas per plan, the X-Quota headers, rate limits, and every error status and body of api.geolith.app. - [Attribution](https://docs.geolith.app/search/hosted/attribution.md): Show © OpenStreetMap contributors (ODbL), Overture Maps Foundation wherever you display geolith results. Results may be stored permanently. - [JavaScript and TypeScript](https://docs.geolith.app/search/hosted/javascript.md): Call api.geolith.app from JavaScript or TypeScript with fetch: typed search, autocomplete and reverse helpers for browsers, Node.js, Deno, Bun and Workers. - [React](https://docs.geolith.app/search/hosted/react.md): An address autocomplete input in React (19) with api.geolith.app: debounced requests, request cancelling, keyboard-friendly list and attribution. - [Vue](https://docs.geolith.app/search/hosted/vue.md): An address autocomplete in Vue 3 with api.geolith.app: a composable with debouncing and request cancelling, and a single-file component. - [Python](https://docs.geolith.app/search/hosted/python.md): Geocode with api.geolith.app from Python: requests for scripts, retries on 429, reverse geocoding, and a pandas batch. ## Search: self-hosting, API reference and benchmarks - [Introduction](https://docs.geolith.app/search/getting-started/introduction.md): What geolith search is and how it fits into the geolith stack. - [Quickstart](https://docs.geolith.app/search/getting-started/quickstart.md): Send your first requests to a running geolith search server. - [Configuration](https://docs.geolith.app/search/getting-started/configuration.md): Environment variables and flags of the geolith-search binary. - [Search](https://docs.geolith.app/search/api/search.md): Forward geocoding: find places that match free text. - [Autocomplete](https://docs.geolith.app/search/api/autocomplete.md): Search as you type, with an unfinished last word. - [Structured search](https://docs.geolith.app/search/api/structured.md): Geocoding from separate address fields. - [Reverse](https://docs.geolith.app/search/api/reverse.md): Find the places nearest to a point. - [Responses and errors](https://docs.geolith.app/search/api/responses.md): Response shape, the geocoding block, and status codes. - [Ranking](https://docs.geolith.app/search/concepts/ranking.md): How text relevance, importance and focus points decide the order of results. - [Reverse geocoding](https://docs.geolith.app/search/concepts/reverse.md): How the nearest places to a point are found. - [Privacy](https://docs.geolith.app/search/concepts/privacy.md): What geolith search logs, and what it never logs. - [The index file](https://docs.geolith.app/search/self-hosting/index-file.md): Build the .glx file that geolith search serves. - [Running](https://docs.geolith.app/search/self-hosting/running.md): Run the server and read its logs. - [Latency](https://docs.geolith.app/search/benchmarks/latency.md): Measured latency of every endpoint on the India .glx file. - [Engines](https://docs.geolith.app/search/benchmarks/engines.md): Geolith Search measured against Pelias, Photon and Nominatim on an India extract. - [Reading a town without a comma](https://docs.geolith.app/search/benchmarks/town-reading.md): How the .glx reader finds the town in a query with no comma, measured on Indian queries. - [Contributing](https://docs.geolith.app/search/development/contributing.md): Build, test and commit changes to geolith search. - [Cost calculator](https://docs.geolith.app/search/deploy/cost): Monthly cost and network latency of geocoding on the edge, on one server, on AWS and with hosted vendors. ## Builder: PMTiles and .glx from OpenStreetMap and Overture Maps - [Installation](https://docs.geolith.app/builder/getting-started/installation.md): Install geolith from source or build from the Git repository. - [Quick Start](https://docs.geolith.app/builder/getting-started/quickstart.md): Generate your first PMTiles archive from 6 data sources in minutes. - [Configuration](https://docs.geolith.app/builder/getting-started/configuration.md): CLI options and environment variables for controlling geolith behavior. - [Pipeline Architecture](https://docs.geolith.app/builder/architecture/pipeline.md): The four-phase pipeline that transforms 6 data sources into PMTiles archives. - [Module Structure](https://docs.geolith.app/builder/architecture/modules.md): Overview of the geolith codebase organization and module responsibilities. - [geolith and its Consumers](https://docs.geolith.app/builder/architecture/ecosystem.md): How geolith's outputs feed tileserver-rs for tiles, geolith search for geocoding, and Valhalla or OSRM for routing. - [Performance](https://docs.geolith.app/builder/benchmarks/performance.md): Benchmark results comparing geolith against Planetiler on identical workloads. - [Working with Overture Maps Data](https://docs.geolith.app/builder/guides/overture-data.md): How to download, organize, and use Overture Maps GeoParquet data with geolith. - [Bounding Box Filtering](https://docs.geolith.app/builder/guides/custom-bbox.md): Use --bbox to generate regional extracts instead of processing the entire planet. - [Output Tuning](https://docs.geolith.app/builder/guides/output-tuning.md): Control output size and processing time with zoom levels, threads, and disk configuration. - [GERS Conflation](https://docs.geolith.app/builder/guides/gers-conflation.md): How geolith deduplicates features between OSM and Overture using the Global Entity Reference System. - [Geocoding Output](https://docs.geolith.app/builder/guides/geocoding-output.md): Build a one-file .glx geocoding index, or Pelias, Photon and PostgreSQL exports, from Overture places and addresses plus OpenStreetMap settlements, venues and addresses. - [3D Terrain Pipeline](https://docs.geolith.app/builder/guides/terrain-3d.md): Turn drone footage into Terrain-RGB PMTiles and Gaussian-splat OGC 3D Tiles rendered by MapLibre. - [Raster Basemap Archiver](https://docs.geolith.app/builder/guides/raster-basemap.md): Archive XYZ/WMTS imagery into a PMTiles basemap, with resumable downloads and hybrid planet + region pyramids. - [Testing](https://docs.geolith.app/builder/development/testing.md): How to run tests and benchmarks for geolith. - [Contributing](https://docs.geolith.app/builder/development/contributing.md): Development setup, code style, and contribution guidelines for geolith. - [geolith builder](https://docs.geolith.app/builder.md): geolith builds protomaps-compatible PMTiles vector tile archives and the .glx geocoding index from Overture Maps and OpenStreetMap data, at planet scale, in Rust. ## Optional - [Full docs text](https://docs.geolith.app/llms-full.txt) - [Product site and pricing](https://geolith.app/llms.txt) - [Live demos](https://demo.geolith.app/): the search demo (/search) and the .glx file viewer (/glx/)