---
title: "Search the user's OWN saved places by free text, city, country, category or must-do flag"
method: POST
path: "/actions/search_my_places"
tags: ["places"]
---

# Search the user's OWN saved places by free text, city, country, category or must-do flag

`POST /actions/search_my_places`

## Request

- Base URL: `https://findinghorizons.ca/api/v1`
- URL: `https://findinghorizons.ca/api/v1/actions/search_my_places`
- Auth: OAuth 2 (authorization code, authorization URL `https://findinghorizons.ca/api/mcp/authorize`, token URL `https://findinghorizons.ca/api/mcp/oauth/token`, scopes: `places:read`)

Search the user's OWN saved places by free text, city, country, category or must-do flag. Deterministic substring matching over the stored rows — no model, no ranking model, no outside provider. Returns an explicit empty result (with the filters it applied) when nothing matches.

## Request body

- object
  - `query` string: Free text matched against name, description, address and notes
  - `city` string
  - `country` string: Country name as stored (reverse-geocoded)
  - `category` string: restaurant | cafe | attraction | nature | nightlife | experience | shop | other
  - `mustDoOnly` boolean: Only places flagged must-do
  - `limit` number: Max rows, 1–200 (default 50)
  - `today` string: The traveller's own date, YYYY-MM-DD, where the action needs one

## Response `200`

Done — { ok, api, action, result, card, operation? }

## Other responses

- `400`: Bad body / missing Idempotency-Key
- `401`: No or invalid token
- `403`: Scope not granted
- `422`: The action said no
- `429`: Rate limited

---

[API](https://skmtc.dev/findinghorizons/apis/finding-horizons-api.md) · [All operations](https://skmtc.dev/findinghorizons/apis/finding-horizons-api/llms.txt) · [OpenAPI document](https://skmtc.dev/findinghorizons/apis/finding-horizons-api/revisions/e347f6070173?raw)
