Getting started
Create your account, add payment, get your API key, and make your first Listings API call.
This guide explains how to create an account, getting your first API key, and making a request against the Listings API.
1. Create your account
Pick a plan on the pricing page to open the sign-up form, then enter your first name, last name, work email, and company. Already have an account? Sign in instead.
2. Add payment
After you submit the form we send you to our payment provider to add a card. Your free trial starts right away and converts to the plan you picked when the trial ends, so cancel before then if you don't want to be charged. The pricing FAQ has the current trial length and plan limits.
3. Set your password and sign in
Once checkout is complete we email you a link to set your password and activate your account. After your password is set, sign in with your email and password, or choose Email me a sign-in link to receive a one-time magic link instead.
4. Get your API key
Your first API key is issued automatically when your account is created, find it in the dashboard under API Keys. To create another, choose New key, give it a name, and pick its access level (Read or Write).
5. Make your first request
Authenticate every request with an Authorization header whose value is the
literal string API (note the trailing space), followed by your key:
curl https://listingsapi.com/api/v4/locations \ -H "Authorization: API $LISTINGSAPI_KEY"The response is nested rather than a bare array: results are under
data.allLocations, each record is an
edges[].node, and pageInfo carries the pagination cursor and totals.
{ "data": { "allLocations": { "edges": [ { "cursor": "TG9jYXRpb246MTgwMDI4OQ==", "node": { "id": "TG9jYXRpb246MTgwMDI4OQ==", "databaseId": 1800289, "name": "Jenny Home", "city": "Austin", "stateIso": "TX", "countryIso": "US" } } ], "pageInfo": { "endCursor": "TG9jYXRpb246MTgwMDI4OQ==", "hasNextPage": false, "total": 1 } } }}To page forward, pass pageInfo.endCursor back as ?after=… while
pageInfo.hasNextPage is true, and stop as well if a page comes back with an
empty edges array. Each edge also carries its own cursor, and the last
edge's cursor is that page's endCursor, so either value works as ?after=.
Not every list endpoint pages the same way
The edges / node / pageInfo shape above is the Relay-cursor style, and it
is only one of three:
- Cursor pages (
first,after→edges[].nodepluspageInfowithendCursor/hasNextPage): locations, location search, and the review endpoints (per-location interactions and the account rollup). - Offset pages (
page,perPage→ arecordsarray pluspageInfowithtotalRecords,totalPages,hasNextPage,hasPreviousPage): connected accounts, connection suggestions, posts for a location, bulk posts for a location, and the account-wide duplicate-listings rollup. - Plain arrays, with no pagination at all: the catalog endpoints (subcategories, countries and states, plan sites) and a location's photos.
Check the response example on an endpoint's own page before writing a paging
loop; a cursor loop against an offset endpoint reads an edges key that is
never there.
Next steps
- Sandbox day pass: try locations and listings with no card required. You or your AI agent can start it.
- Authentication: API key headers and key rotation.
- Error codes: HTTP status codes and the error response shape.
- SDKs: typed Python and Node clients.