Search the marketplace
Gateway module
GET/marketplace/opportunitiesmarketplace.search
Searches opportunities the caller may see, by role type, discipline and category, distance, dates, rate and required certifications through the filter grammar. Ranking factors are published; no placement can be bought. A rule that refuses the request returns 422 with `refusal` and `reason`.
- Requires the capability opportunities.posting.read.
- OAuth scopes: opportunities.
- Error statuses: 400, 401, 422, 429. Errors are RFC 9457 problem details.
Path and query parameters
| Field | Type | Required | Description |
|---|---|---|---|
| q | string | No | Free-text search. |
| near | string | No | Latitude and longitude to measure distance from.Constraints: pattern ^-?[0-9.]+,-?[0-9.]+$ |
| radius_km | number | No | Search radius in kilometers. |
Response 200: MarketplaceListingPage
| Field | Type | Required | Description |
|---|---|---|---|
| data | array of MarketplaceListing | Yes | Items on this page, in the documented default order. |
| next_cursor | string | null | Yes | Opaque cursor for the next page; null on the last page. |
{
"data": [
{
"id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
"org_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
"title": "Stagehands for Harborfront Load-In",
"role_type": "Crew",
"role_code": "5000.50.01",
"venue_locality": "Miami",
"rate_type": "Day",
"pay_min_minor": 32000,
"pay_max_minor": 38000,
"distance_km": 12.4,
"org_name": "Northwind Live",
"org_verified": true,
"description": "Load-in and show calls for six weekends.",
"cat_urid": "4000.01",
"venue_name": "Harbor Lawn",
"jurisdiction_id": "US-FL",
"starts_on": "2026-10-08",
"ends_on": "2026-10-08",
"visibility": "Pool",
"currency_code": "USD",
"rate_on_request": false,
"deadline_at": "2026-10-08T14:30:00Z",
"minimum_age": 18,
"opportunity_state": "Published",
"position_count": 4
}
],
"next_cursor": null
}Code samples
curl -X GET "$XOS_BASE_URL/marketplace/opportunities" \
-H "Authorization: Bearer $XOS_API_KEY"const { data } = await xos.marketplace.search();response = xos.marketplace.search()xos marketplace search