This repository includes tutorials, such as Jupyter notebooks, Google Sheets guides and more, showcasing the features of the Placekey, the Placekey API, Placekey Python library and an expanse of no-code tools.
For more details about Placekey, visit the Placekey website.
-
Clone this repo and install dependencies.
requirements.txtis hash-pinned (all transitive deps locked with sha256 hashes) and generated fromrequirements.in. Pip verifies hashes automatically:pip install -r requirements.txt
To bump versions, edit
requirements.inthen regenerate with uv (universal mode, so the lockfile works across macOS + Linux without platform-specific drift):uv pip compile --universal --python-version 3.11 --generate-hashes \ --output-file=requirements.txt requirements.inDependabot raises weekly PRs to update pinned versions + hashes (see
.github/dependabot.yml). Major-version bumps are capped in bothrequirements.inanddependabot.yml'signore:block; to take one, raise the cap in both files and regenerate. A companion workflow (dependabot-lockfile.yml) auto-regeneratesrequirements.txtwithuvafter each Dependabot pip PR so hashes stay coherent across transitives. -
Get a Placekey API key — sign up at placekey.io.
-
Provide the key to the notebooks without pasting it into a cell. Pick one:
- Environment variable (recommended):
export PLACEKEY_API_KEY="your-key-here" jupyter lab
.envfile (auto-loaded bypython-dotenv): copy.env.exampleto.envand fill it in..envis gitignored.- Interactive prompt: if neither of the above is set, the API notebooks fall back to
getpass.getpass()and will prompt you at run time.
Never commit API keys.
.gitignoreexcludes.env,*.key, and*_api_key*, and CI runs a secret scan on every push. - Environment variable (recommended):
- Joining POI datasets with Placekey: [tutorial], [colab notebook]
- Joining POI and non-POI datasets with Placekey: [tutorial], [colab notebook]
- How to Clean and Deduplicate Addresses ("De-Duping"): [tutorial], [colab notebook]
Google Sheets with Placekey for Google Sheets
- Using Placekey without Addresses (Latitude and Longitude Only): [tutorial]
- Using Placekey to Deal with Multiple Points of Interest at a Single Address: [tutorial]
ArcGIS with AGS_placekey
- Address Matching without a Geocoder: [tutorial]
Using the placekey-py Python library
- Calling Single Placekey Endpoint: [notebook], [colab notebook]
- Calling Bulk Placekey Endpoint: [notebook], [colab notebook]
- Basic Spatial Functionality of Placekey: [notebook]
- Advanced Spatial Functionality of Placekey: [notebook]
- API keys are read from
PLACEKEY_API_KEYor prompted interactively — never hardcode them in cells. - Dependencies in
requirements.txtare hash-pinned (sha256) and verified by pip on install. Range specs live inrequirements.in; Dependabot opens weekly bump PRs. - CI runs on every push and pull request:
gitleaks— secret scanning- Notebook hygiene check — blocks committed personal paths (
/Users/,/home/) and API-key literals in cell sources nbmake— executes the key-free notebooks (basic_functionality,advanced_functionality)
If you find a security issue, please open a private report via GitHub Security Advisories.