Skip to main content site crawler. Provides tools for searching, fetching caches and geocoding.

Project description

Complete documentation can be found at Read the Docs.


  • login to
  • search caches
    • normal search (unlimited number of caches from any point)
    • quick search (all caches inside some area)
  • get cache and its details
    • normal loading (can load all details)
    • quick loading (can load just basic info but very quickly)
    • load logbook for given cache
  • get trackable details by tracking code
  • post log for a cache or a trackable
  • geocode given location


Stable version - using pip:

pip install pycaching

Dev version - manually from GIT:

git clone
cd pycaching
pip install .

Pycaching has following requirements:




Simly call pycaching.login() method and it will do everything for you.

import pycaching
geocaching = pycaching.login("user", "pass")

If you won’t provide an username or password, pycaching will try to load .gc_credentials file from current directory or home folder. It will try to parse it as JSON and use the keys username and password from that file as login credentials.

# sample .gc_credentials JSON file
{ "username": "myusername", "password": "mypassword" }
import pycaching
geocaching = pycaching.login()  # assume the .gc_credentials file is presented

Load a cache details

cache = geocaching.get_cache("GC1PAR2")
print(  # cache.load() is automatically called
print(cache.location)  # stored in cache, printed immediately

This uses lazy loading, so the Cache object is created immediately and the page is loaded when needed (accessing the name).

You can use different method of loading cache details. It will be much faster, but it will load less details:

cache = geocaching.get_cache("GC1PAR2")
cache.load_quick()  # takes a small while
print(  # stored in cache, printed immediately
print(cache.location)  # NOT stored in cache, will trigger full loading

You can also load a logbook for cache:

for log in cache.load_logbook(limit=200):
    print(log.visited, log.type,, log.text)

Or its trackables:

for trackable in cache.load_trackables(limit=5):

Post a log to cache

geocaching.post_log("GC1PAR2", "Found cache in the rain. Nice place, TFTC!")

It is also possible to call post_log on Cache object, but you would have to create Log object manually and pass it to this method.

Search for all traditional caches around

from pycaching import Point
from pycaching.cache import Type

point = Point(56.25263, 15.26738)

for cache in, limit=50):
    if cache.type == Type.traditional:

Notice the limit in the search function. It is because returns a generator object, which would fetch the caches forever in case of simple loop.

Geocode adress and search around

point = geocaching.geocode("Prague")

for cache in, limit=10):

Find caches with their approximate locations in some area

from pycaching import Point, Rectangle

rect = Rectangle(Point(60.15, 24.95), Point(60.17, 25.00))

for cache in geocaching.search_quick(rect, strict=True):
    print(, cache.location.precision)

Load a trackable details

trackable = geocaching.get_trackable("TB3ZGT2")
print(, trackable.goal, trackable.description, trackable.location)

Post a log for trackable

from pycaching.log import Log, Type as LogType
import datetime

log = Log(type=LogType.discovered_it, text="Nice TB!",
tracking_code = "ABCDEF"
trackable.post_log(log, tracking_code)



Original version was inspired by these packages:

Although the new version was massively rewritten, I’d like to thank to their authors.


Authors of this project are all contributors. Maintainer is Tomáš Bedřich.

Build Status Coverage Status PyPI monthly downloads

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for pycaching, version 3.5.4
Filename, size File type Python version Upload date Hashes
Filename, size pycaching-3.5.4-py3-none-any.whl (33.7 kB) File type Wheel Python version 3.5 Upload date Hashes View
Filename, size pycaching-3.5.4.tar.gz (39.4 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page