Using the API

    Pagination

    Every list pages the same way: `limit` and `cursor` in, `next_cursor` out.


    How it works

    A list returns one page. The pagination block tells you whether there is another:

    json
    "pagination": { "limit": 100, "has_more": true, "next_cursor": "eyJvIjoxMDAsInEiOiI0ZjJhIn0", "total": 598 }
    FieldMeaning
    limitThe page size that was applied.
    has_moretrue when another page exists.
    next_cursorPass this as cursor to get the next page. null on the last page.
    totalHow many records match in all. Present on professionals and practices.

    To read a search's results, repeat the request with cursor set to the last next_cursor until has_more is false. A geographic search (professionals, practices, clinics) lists its nearest 500 records; past them has_more is false, and a cursor beyond them is refused with 400 search_too_deep.

    python
    params = {"postal_code": "90013", "radius_miles": 10, "limit": 50}
    while True:
        page = requests.get(f"{API}/professionals", headers=HEADERS, params=params, timeout=15).json()
        handle(page["data"])
        if not page["pagination"]["has_more"]:
            break
        params["cursor"] = page["pagination"]["next_cursor"]

    Rules

    • Treat the cursor as opaque. Do not build or edit one. Its contents can change without notice.
    • Keep the query the same between pages. A cursor belongs to the filters and the sort it was issued for. Using it with different ones returns 400 invalid_cursor, so a changed filter can never silently skip records.
    • Order is stable. Every sort is tie-broken by record id, so a record never appears on two pages or falls between them.
    • Page sizes. Professionals, practices and clinics: up to 100 per page (default 50 for people, 25 for clinics), and up to 50 per MCP call. Licenses: up to 50, default 10.
    • How deep. A geographic search lists its nearest 500 records. Narrow it to see others.

    Paging and billing

    Each request is charged by the number of records it returns: $0.20 with the first 10 included, then $0.02 for each record after those. Listing 500 people at 100 per page is five requests and $10.00. The total is the same at any page size, so pick the limit that suits your screen, and use the filters you actually need: profession, the years-licensed filters, specialty_type, and a radius that matches the commute you are hiring for.

    pagination.total on the first response tells you what the whole list will cost before you fetch the rest. License searches are a flat $0.50 per request.

    Paging and limits

    Pages count toward the rate limits like any other call. An account can read up to 5,000 records a day. That is far more than hiring in a handful of markets needs, and far less than a copy of the index.