Skip to content
Get started

Location

Request a contact’s location, retrieve location for contacts sharing with you, and subscribe to webhooks when someone starts or stops sharing.

Coordinates are returned in GeoJSON format: [longitude, latitude] or [longitude, latitude, altitude] if altitude is available.

Reading location is poll-based

Poll GET /v3/chats/{chatId}/location whenever you need the latest position. There is no webhook that pushes updated coordinates — the location.sharing.started / location.sharing.stopped webhooks fire only when a contact begins or ends sharing, not on each position update. To track a moving contact, poll the GET endpoint.

Freshness

Each feature’s properties.updated_at tells you when that participant’s location was last updated — use it to judge freshness.

Polling guidance

Locations refresh on Apple’s cadence, not per request — polling faster than a participant’s location actually updates just returns the same position. Poll at a modest interval (for example, once every few minutes per chat) rather than continuously.

Why is location empty after location.sharing.started fired?

If the contact started sharing from the standalone Find My app instead of the Messages conversation, the share may be tied to their Apple ID email rather than their phone number — the webhook’s shared_by field shows the email in that case. Location is readable only through a chat with the handle that shared, so GET /v3/chats/{chatId}/location on the phone-number chat stays empty.

The fix: have the contact stop sharing and re-share from Find My inside the Messages conversation with your number.

Request location sharing
client.Chats.Location.Request(ctx, chatID) (*LocationRequestResponse, error)
POST/v3/chats/{chatId}/location/request
Get location data
client.Chats.Location.Get(ctx, chatID) (*GetChatLocationResponse, error)
GET/v3/chats/{chatId}/location
ModelsExpand Collapse
type GetChatLocationResponse struct{…}
Data GetChatLocationResponseData
Features []GetChatLocationResponseDataFeature
Geometry GetChatLocationResponseDataFeatureGeometry
Coordinates []float64

[longitude, latitude] or [longitude, latitude, altitude]

Type string
Properties GetChatLocationResponseDataFeatureProperties
Handle string

Phone number or email of the person sharing their location

Address stringOptional

Full street address

Locality stringOptional

City or locality name

UpdatedAt TimeOptional

When the location was last updated

formatdate-time
Type string
Type string
Success bool
type LocationRequestResponse struct{…}
Message string
Success bool