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 montjoyplaces import MontjoyPlaces

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

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

Quick Start

from montjoyplaces 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 montjoyplaces 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 montjoyplaces import ListGroupsParams

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

Create a Group

from montjoyplaces import GroupCreateRequest

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

Search Places

from montjoyplaces import SearchPlacesParams

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

Create a Custom Place

from montjoyplaces 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 montjoyplaces 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 montjoyplaces 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")

Export and Import Custom Places

from montjoyplaces import CustomPlaceImportRow, CustomPlacesImportRequest, ExportCustomPlacesParams

exported = client.export_custom_places(
    ExportCustomPlacesParams(groupId="group_123", includeHidden=True)
)

imported = client.import_custom_places(
    CustomPlacesImportRequest(
        mode="upsert",
        rows=[
            CustomPlaceImportRow(
                custom_place_id=row.custom_place_id,
                group_id=row.group_id,
                name=row.name,
                latitude=row.latitude,
                longitude=row.longitude,
            )
            for row in exported.rows
        ],
    )
)

Override a Place

from montjoyplaces import OverrideRequest

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

Lookup US Cities

from montjoyplaces 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 montjoyplaces 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, export_custom_places, import_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 montjoyplaces 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, export, import, 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.3.tar.gz (11.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.3-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for montjoyplaces-1.0.3.tar.gz
Algorithm Hash digest
SHA256 64112aff68dfe1acc140e8ba02af51c5148d1cbdb3a0268b11f960c3f95a0d41
MD5 8afe227e1d11bb3839a588cc5ca912cc
BLAKE2b-256 dde983dfd92e221c1bc9d36b678e42d86ab57adbb4f695606f6afce12f91adc6

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for montjoyplaces-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 aef8c00b6b9dbe68c7d4cd403447eb3247cc3e0f62703c28b4c7f73915b88f1e
MD5 3aa8637a641f4f7f64852f997aa268d8
BLAKE2b-256 3f4b8169fe53b4633091ff7e87c5ebbd5fd43e9124a4d55ecad5ec5c10c7ae4a

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