Skip to main content

Official Python SDK for the Montjoy Places API.

Project description

MontjoyPlaces Python SDK

Official Python SDK for the Montjoy Places API.

Installation

Install from a package index:

pip install MontjoyPlaces

Install from source:

pip install .

Authentication

Create a client with your Montjoy Places API key:

from montjoy_places import MontjoyPlaces

client = MontjoyPlaces("your-api-key")

The SDK sends the API key using the X-API-Key header.

Quick Start

from montjoy_places import MontjoyPlaces, SearchPlacesParams

client = MontjoyPlaces("your-api-key")

try:
    who_am_i = client.who_am_i()
    print("tenant=", who_am_i.tenantId)

    search = client.search_places(
        SearchPlacesParams(q="coffee near Boston MA", limit=3)
    )
    print("results=", search.count)
    print(search.rows)
finally:
    client.close()

Client Construction

The SDK supports the default API base URL:

from montjoy_places import MontjoyPlaces

client = MontjoyPlaces("your-api-key")

You can also point at a different environment:

client = MontjoyPlaces(
    api_key="your-api-key",
    base_url="https://api.montjoyplaces.com",
)

Common Examples

Check API Identity

who_am_i = client.who_am_i()
print(who_am_i)

List Groups

from montjoy_places import ListGroupsParams

groups = client.list_groups(ListGroupsParams(limit=10))

Create a Group

from montjoy_places import GroupCreateRequest

created_group = client.create_group(GroupCreateRequest(name="Favorites"))

Search Places

from montjoy_places import SearchPlacesParams

search = client.search_places(
    SearchPlacesParams(
        q="pizza near New York NY",
        limit=5,
        radiusMeters=5000,
    )
)

Create a Custom Place

from montjoy_places import CustomPlaceCreateRequest

created = client.create_custom_place(
    CustomPlaceCreateRequest(
        groupId="group_123",
        name="My Custom Place",
        latitude=42.3601,
        longitude=-71.0589,
        address="1 Beacon St",
        locality="Boston",
        region="MA",
        postcode="02108",
        country="US",
        website="https://example.com",
        tags=["favorite", "team"],
        meta={"source": "python-sdk"},
    )
)

Update a Custom Place

from montjoy_places import CustomPlaceUpdateRequest

updated = client.update_custom_place(
    "custom_place_id",
    CustomPlaceUpdateRequest(
        name="Updated Place Name",
        website="https://example.com/updated",
    ),
)

Hide or Unhide a Custom Place

from montjoy_places import CustomPlaceHideRequest

client.hide_custom_place("custom_place_id", CustomPlaceHideRequest(hidden=True))
client.hide_custom_place("custom_place_id", CustomPlaceHideRequest(hidden=False))

Delete a Custom Place

deleted = client.delete_custom_place("custom_place_id")

Override a Place

from montjoy_places import OverrideRequest

response = client.override_place(
    "fsq_place_id",
    OverrideRequest(
        groupId="group_123",
        name="My Overridden Name",
        hide=False,
    ),
)

Lookup US Cities

from montjoy_places import LookupNearestUsCitiesParams, SearchUsCitiesParams

nearest = client.lookup_nearest_us_cities(
    LookupNearestUsCitiesParams(lat=42.3601, lon=-71.0589, limit=5)
)

matches = client.search_us_cities(
    SearchUsCitiesParams(q="Boston", state="MA", limit=5)
)

zip_lookup = client.lookup_us_zipcode("02108")

Lookup Categories

from montjoy_places import GetCategoryChildrenParams, SearchCategoriesParams

categories = client.search_categories(
    SearchCategoriesParams(q="coffee", limit=10)
)

category = client.get_category("13032")

children = client.get_category_children(
    "13032",
    GetCategoryChildrenParams(limit=20),
)

Supported Operations

The SDK currently includes methods for:

  • API identity: who_am_i
  • Groups: list_groups, create_group, update_group, delete_group
  • Custom places: list_custom_places, create_custom_place, get_custom_place, update_custom_place, delete_custom_place, hide_custom_place
  • Place overrides: override_place
  • US city lookup: lookup_nearest_us_cities, search_us_cities, lookup_us_zipcode
  • Category lookup: search_categories, get_category, get_category_children
  • Search: search_places

Error Handling

API failures raise MontjoyPlacesError.

from montjoy_places import MontjoyPlaces, MontjoyPlacesError

try:
    client = MontjoyPlaces("your-api-key")
    client.who_am_i()
except MontjoyPlacesError as exc:
    print("status:", exc.status)
    print("message:", exc)
    print("body:", exc.body)

Samples

Sample programs are included in samples/:

  • basic.py shows authentication, group listing, and search
  • integration.py exercises create, update, hide, list, and cleanup flows for groups and custom places

Run a sample with an API key set in the environment:

PYTHONPATH=src MONTJOY_PLACES_API_KEY=your-api-key python3 samples/basic.py
PYTHONPATH=src MONTJOY_PLACES_API_KEY=your-api-key python3 samples/integration.py

Project details


Download files

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

Source Distribution

montjoyplaces-1.0.0.tar.gz (10.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

montjoyplaces-1.0.0-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file montjoyplaces-1.0.0.tar.gz.

File metadata

  • Download URL: montjoyplaces-1.0.0.tar.gz
  • Upload date:
  • Size: 10.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for montjoyplaces-1.0.0.tar.gz
Algorithm Hash digest
SHA256 673972cc994029390c399d1868dd88495ada96b06133563e968f40ac1b11cabd
MD5 b589d92778142188bb79d410e9ef92f6
BLAKE2b-256 94e4a5cf594c56a6509ee0a83f32fc7c9040acd382990f663a02632356434db2

See more details on using hashes here.

File details

Details for the file montjoyplaces-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: montjoyplaces-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 9.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for montjoyplaces-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 11c4d54a1402121460547810c74976c9d9d4bd3f28f654506c4867aadb32ebfc
MD5 f3fd31e3639b10b785ca87254860ace6
BLAKE2b-256 cf048bc798877fccb6a174234ea67f394febf9fef0722303f76ada83c6253645

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page