apple_maps_api.models#

Pydantic models for Apple Maps Server API responses.

Model names and field names match Apple’s official API documentation exactly. Docstrings explain what each field represents in familiar terms.

See: https://developer.apple.com/documentation/applemapsserverapi

Classes#

AddressCategory

Enum where members are also (and must be) strings

PoiCategory

Enum where members are also (and must be) strings

SearchResultType

Result type filter for /v1/search.

SearchACResultType

Result type filter for /v1/searchAutocomplete.

SearchRegionPriority

Importance of searchRegion for /v1/search and /v1/searchAutocomplete.

Location

A coordinate pair from Apple Maps API.

StructuredAddress

Detailed address components of a place.

MapRegion

A rectangular bounding box on a map.

Place

A place returned by geocode, reverseGeocode, or place lookup endpoints.

SearchPlace

Extended Place returned by /v1/search with POI category info.

PlaceResults

Response from /v1/geocode and /v1/reverseGeocode.

PaginationInfo

Pagination metadata from /v1/search when enablePagination is true.

SearchResponse

Response from /v1/search.

AutocompleteResult

A single autocomplete suggestion from /v1/searchAutocomplete.

SearchAutocompleteResponse

Response from /v1/searchAutocomplete.

TokenResponse

Response from /v1/token.

GeocodeResult

Provider-agnostic geocode result.

Module Contents#

class apple_maps_api.models.AddressCategory[source]#

Bases: enum.StrEnum

Enum where members are also (and must be) strings

Country = 'Country'[source]#
AdministrativeArea = 'AdministrativeArea'[source]#
SubAdministrativeArea = 'SubAdministrativeArea'[source]#
Locality = 'Locality'[source]#
SubLocality = 'SubLocality'[source]#
PostalCode = 'PostalCode'[source]#
class apple_maps_api.models.PoiCategory[source]#

Bases: enum.StrEnum

Enum where members are also (and must be) strings

Airport = 'Airport'[source]#
AirportGate = 'AirportGate'[source]#
AirportTerminal = 'AirportTerminal'[source]#
AmusementPark = 'AmusementPark'[source]#
AnimalService = 'AnimalService'[source]#
Aquarium = 'Aquarium'[source]#
ATM = 'ATM'[source]#
AutomotiveRepair = 'AutomotiveRepair'[source]#
Bakery = 'Bakery'[source]#
Bank = 'Bank'[source]#
Baseball = 'Baseball'[source]#
Basketball = 'Basketball'[source]#
Beach = 'Beach'[source]#
Beauty = 'Beauty'[source]#
Bowling = 'Bowling'[source]#
Brewery = 'Brewery'[source]#
Cafe = 'Cafe'[source]#
Campground = 'Campground'[source]#
CarRental = 'CarRental'[source]#
Castle = 'Castle'[source]#
ConventionCenter = 'ConventionCenter'[source]#
Distillery = 'Distillery'[source]#
EVCharger = 'EVCharger'[source]#
Fairground = 'Fairground'[source]#
FireStation = 'FireStation'[source]#
Fishing = 'Fishing'[source]#
FitnessCenter = 'FitnessCenter'[source]#
FoodMarket = 'FoodMarket'[source]#
Fortress = 'Fortress'[source]#
GasStation = 'GasStation'[source]#
GoKart = 'GoKart'[source]#
Golf = 'Golf'[source]#
Hiking = 'Hiking'[source]#
Hospital = 'Hospital'[source]#
Hotel = 'Hotel'[source]#
Kayaking = 'Kayaking'[source]#
Landmark = 'Landmark'[source]#
Laundry = 'Laundry'[source]#
Library = 'Library'[source]#
Mailbox = 'Mailbox'[source]#
Marina = 'Marina'[source]#
MiniGolf = 'MiniGolf'[source]#
MovieTheater = 'MovieTheater'[source]#
Museum = 'Museum'[source]#
MusicVenue = 'MusicVenue'[source]#
NationalMonument = 'NationalMonument'[source]#
NationalPark = 'NationalPark'[source]#
Nightlife = 'Nightlife'[source]#
Park = 'Park'[source]#
Parking = 'Parking'[source]#
Pharmacy = 'Pharmacy'[source]#
Planetarium = 'Planetarium'[source]#
Playground = 'Playground'[source]#
Police = 'Police'[source]#
PostOffice = 'PostOffice'[source]#
PublicTransport = 'PublicTransport'[source]#
ReligiousSite = 'ReligiousSite'[source]#
Restaurant = 'Restaurant'[source]#
Restroom = 'Restroom'[source]#
RockClimbing = 'RockClimbing'[source]#
RVPark = 'RVPark'[source]#
School = 'School'[source]#
SkatePark = 'SkatePark'[source]#
Skating = 'Skating'[source]#
Skiing = 'Skiing'[source]#
Soccer = 'Soccer'[source]#
Spa = 'Spa'[source]#
Stadium = 'Stadium'[source]#
Store = 'Store'[source]#
Surfing = 'Surfing'[source]#
Swimming = 'Swimming'[source]#
Tennis = 'Tennis'[source]#
Theater = 'Theater'[source]#
University = 'University'[source]#
Volleyball = 'Volleyball'[source]#
Winery = 'Winery'[source]#
Zoo = 'Zoo'[source]#
class apple_maps_api.models.SearchResultType[source]#

Bases: enum.StrEnum

Result type filter for /v1/search.

poi = 'poi'[source]#
address = 'address'[source]#
physicalFeature = 'physicalFeature'[source]#
pointOfInterest = 'pointOfInterest'[source]#
class apple_maps_api.models.SearchACResultType[source]#

Bases: enum.StrEnum

Result type filter for /v1/searchAutocomplete.

poi = 'poi'[source]#
address = 'address'[source]#
physicalFeature = 'physicalFeature'[source]#
pointOfInterest = 'pointOfInterest'[source]#
query = 'query'[source]#
class apple_maps_api.models.SearchRegionPriority[source]#

Bases: enum.StrEnum

Importance of searchRegion for /v1/search and /v1/searchAutocomplete.

Apple possible values: default, required.

default = 'default'[source]#
required = 'required'[source]#
class apple_maps_api.models.Location(/, **data: Any)[source]#

Bases: pydantic.BaseModel

A coordinate pair from Apple Maps API.

latitude: north-south position (e.g. 37.334) longitude: east-west position (e.g. -122.009)

latitude: float[source]#
longitude: float[source]#
class apple_maps_api.models.StructuredAddress(/, **data: Any)[source]#

Bases: pydantic.BaseModel

Detailed address components of a place.

Apple uses different terminology than most geocoding APIs: - locality = city - administrativeArea = state/province name - administrativeAreaCode = state/province short code (e.g. “NY”) - subAdministrativeArea = county name - postCode = postal/ZIP code - fullThoroughfare = full street address (number + street, e.g. “841 Broadway”) - thoroughfare = street name (e.g. “Broadway”) - subThoroughfare = street/house number (e.g. “841”) - subLocality = neighborhood or area within the city - areasOfInterest = common names for the surrounding area - dependentLocalities = neighborhood names

administrativeArea: str | None = None[source]#
administrativeAreaCode: str | None = None[source]#
subAdministrativeArea: str | None = None[source]#
areasOfInterest: list[str] | None = None[source]#
dependentLocalities: list[str] | None = None[source]#
fullThoroughfare: str | None = None[source]#
locality: str | None = None[source]#
postCode: str | None = None[source]#
subLocality: str | None = None[source]#
subThoroughfare: str | None = None[source]#
thoroughfare: str | None = None[source]#
class apple_maps_api.models.MapRegion(/, **data: Any)[source]#

Bases: pydantic.BaseModel

A rectangular bounding box on a map.

Expressed as south-west and north-east corners.

eastLongitude: float[source]#
northLatitude: float[source]#
southLatitude: float[source]#
westLongitude: float[source]#
class apple_maps_api.models.Place(/, **data: Any)[source]#

Bases: pydantic.BaseModel

A place returned by geocode, reverseGeocode, or place lookup endpoints.

coordinate: lat/lng of the place formattedAddressLines: human-readable address lines (e.g. [“841 Broadway”, “New York, NY 10003”]) structuredAddress: parsed address components displayMapRegion: suggested map viewport for displaying this place

id: str | None = None[source]#
name: str | None = None[source]#
coordinate: Location | None = None[source]#
formattedAddressLines: list[str] | None = None[source]#
structuredAddress: StructuredAddress | None = None[source]#
country: str | None = None[source]#
countryCode: str | None = None[source]#
displayMapRegion: MapRegion | None = None[source]#
alternateIds: list[str] | None = None[source]#
class apple_maps_api.models.SearchPlace(/, **data: Any)[source]#

Bases: Place

Extended Place returned by /v1/search with POI category info.

poiCategory: point-of-interest category (e.g. Restaurant, MovieTheater). Unknown values from Apple fail validation so we notice and add support.

poiCategory: PoiCategory | None = None[source]#
class apple_maps_api.models.PlaceResults(/, **data: Any)[source]#

Bases: pydantic.BaseModel

Response from /v1/geocode and /v1/reverseGeocode.

results: list of Place objects matching the query

results: list[Place][source]#
class apple_maps_api.models.PaginationInfo(/, **data: Any)[source]#

Bases: pydantic.BaseModel

Pagination metadata from /v1/search when enablePagination is true.

nextPageToken / prevPageToken: opaque tokens for pageToken on the next request totalPageCount: total pages available totalResults: total matching results

nextPageToken: str | None = None[source]#
prevPageToken: str | None = None[source]#
totalPageCount: int | float | None = None[source]#
totalResults: int | float | None = None[source]#
class apple_maps_api.models.SearchResponse(/, **data: Any)[source]#

Bases: pydantic.BaseModel

Response from /v1/search.

results: list of SearchPlace objects with optional POI category displayMapRegion: suggested map viewport encompassing all results paginationInfo: present when the request set enablePagination

results: list[SearchPlace][source]#
displayMapRegion: MapRegion | None = None[source]#
paginationInfo: PaginationInfo | None = None[source]#
class apple_maps_api.models.AutocompleteResult(/, **data: Any)[source]#

Bases: pydantic.BaseModel

A single autocomplete suggestion from /v1/searchAutocomplete.

completionUrl: relative URL to /v1/search to fetch full details for this suggestion displayLines: raw text lines Apple returns — use completionTitle / completionSubtitle instead location: approximate coordinate of the suggestion structuredAddress: parsed address components if available

completionUrl: str | None = None[source]#
displayLines: list[str] | None = None[source]#
location: Location | None = None[source]#
structuredAddress: StructuredAddress | None = None[source]#
property completionTitle: str | None[source]#

Primary display text (e.g. place name or street address).

property completionSubtitle: str | None[source]#

Secondary display text (e.g. city, state).

class apple_maps_api.models.SearchAutocompleteResponse(/, **data: Any)[source]#

Bases: pydantic.BaseModel

Response from /v1/searchAutocomplete.

results: list of autocomplete suggestions

results: list[AutocompleteResult][source]#
class apple_maps_api.models.TokenResponse(/, **data: Any)[source]#

Bases: pydantic.BaseModel

Response from /v1/token.

accessToken: short-lived Bearer token for API requests expiresInSeconds: token lifetime (typically 1800 = 30 minutes)

accessToken: str[source]#
expiresInSeconds: int[source]#
class apple_maps_api.models.GeocodeResult(/, **data: Any)[source]#

Bases: pydantic.BaseModel

Provider-agnostic geocode result.

Identical to radar-mapping-api’s GeocodeResult for drop-in replacement. This abstraction allows swapping Apple Maps for Radar without changing consuming code.

lat: float[source]#
lon: float[source]#
address1: str | None = None[source]#
address2: str | None = None[source]#
postal_code: str | None[source]#
city: str | None[source]#
state_code: str | None[source]#
country_code: str | None = None[source]#
formatted_address: str | None[source]#