skip to navigation
skip to content

Not Logged In

pycaching 3.1.1 site crawler. Provides tools for searching, fetching caches and geocoding.

A Python 3 interface for working with website.


  • login to
  • search caches
    • normal search (unlimited number of caches from any point)
    • quick search (all caches inside some area)
  • load cache details by WP
    • normal loading (loads all details)
    • quick loading (loads just basic info very quickly)
    • lazy loading (create cache object and load info on demand)
  • geocode given location


  • search results caching (not geo- :)
  • Sphinx documentation
  • submitting cache logs
  • usage of asyncio
  • automatic generation of possible cache attributes - partially done


Using pip:

pip install pycaching

Manually, from GIT:

git clone


  • Python >= 3.0 (3.4 required for running tests)
  • MechanicalSoup >= 0.3.1
  • geopy >= 1.0.0

Example usage


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

The above is just shortcut for:

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

Load a cache details

import pycaching

geocaching = pycaching.login("user", "pass")
cache = geocaching.load_cache("GC12345")

Using lazy loading:

from pycaching import Geocaching, Cache

geocaching = Geocaching()
geocaching.login("user", "pass")
cache = Cache("GC12345", geocaching)

The difference is, that Cache object is created immediately and the page is loaded when needed (accessing the name).

Find all traditional caches around

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

from pycaching import Geocaching, Point

point = Point(10.123456, 10.123456)
geocaching = Geocaching()
geocaching.login("user", "pass")

for cache in, limit=50):
    if cache.cache_type == "Traditional Cache":

Find all caches on some adress

import pycaching

geocaching = pycaching.login("user", "pass")
point = geocaching.geocode("10900 Euclid Ave in Cleveland")

for cache in, limit=10):

Find approximate location of caches in area

from pycaching import Geocaching, Point, Rectangle

geocaching = pycaching.Geocaching()
geocaching.login("user", "pass")
rect = Rectangle(Point(60.15, 24.95), Point(60.17, 25.00))

for c in geocaching.search_quick(rect, strict=True):
    print('{:8} ({:.5f}, {:.5f}) (+- {:.1f} m); {}'.format(
        c.wp, c.location.latitude, c.location.longitude,



Original version was inspired by these packages:

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


Tomas Bedrich

File Type Py Version Uploaded on Size
pycaching-3.1.1.tar.gz (md5) Source 2015-05-09 25KB
  • Downloads (All Versions):
  • 31 downloads in the last day
  • 193 downloads in the last week
  • 705 downloads in the last month