# Merx — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Search and monitor Canadian government tenders, RFPs, and contract opportunities on Merx, with the ability to filter by category and view detailed solicitation information for both open and closed opportunities. Find procurement projects that match your business needs and track their status through comprehensive tender data.

**Category:** Government & Public Data | **Website:** [merx.com/](https://merx.com/) | **Docs:** [parse.bot/marketplace/882b8ab3-541d-49b0-85e8-bb39fa005332/merx-com-api](https://parse.bot/marketplace/882b8ab3-541d-49b0-85e8-bb39fa005332/merx-com-api)

Pay-per-use API proxy for Locus Pro. Each call burns credits from your workspace balance.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/credits/merx/`
**Auth:** `Authorization: Bearer <LOCUS_CREDITS_SECRET_KEY>` (an `lcr_` secret key or a scoped `lcac_` agent credential)
**Required header:** `Idempotency-Key: <fresh UUID per call>`. A retry with the same key replays the stored result without a new charge.
**Response:** the provider response after any endpoint-specific normalization. `X-Locus-Credits-Charged` carries the charge and `X-Locus-Credits-Balance` the remaining balance. Insufficient credits return `402` before the provider is called.
**Pricing:** estimated costs below are USD. Locus debits the credit equivalent at your workspace rate.

Full call contract: https://docs.paywithlocus.com/api-reference/introduction

> Using a Pay With Locus wallet key (`claw_` prefix)? Wallet routes are documented separately: https://docs.paywithlocus.com/wrapped-apis/for-agents

## Endpoints

### Get filter options

Retrieve available filter options for categories, locations, and publish dates. Returns the full set of codes accepted by the search endpoints' category, location, and publish_date parameters. One round-trip; no pagination.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/merx/get-filter-options \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### Get solicitation categories

Retrieve the MERX category codes and names assigned to a specific solicitation. Returns hierarchical procurement category classifications. The internal_id is obtained from search results.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `internal_id` | string | Yes | The numeric internal solicitation ID (e.g., 3577773664) from search results. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/merx/get-solicitation-categories \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"internal_id":"<string>"}'
```

### Get solicitation detail

Retrieve full details of a single solicitation by its internal ID. Returns comprehensive information including description, dates, categories, issuing organization, solicitation type, and document references. The internal_id is obtained from search_open_solicitations or search_closed_solicitations results.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `internal_id` | string | Yes | The numeric internal solicitation ID (e.g., 3577773664) from search results. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/merx/get-solicitation-detail \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"internal_id":"<string>"}'
```

### Search closed solicitations

Search for closed/past tender solicitations on Merx. Accepts keyword, category, and location filters with pagination. Each result carries an internal_id usable with get_solicitation_detail.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `category` | string | No | Category code from get_filter_options. |
| `keywords` | string | No | Search keywords to filter solicitations by title or content. |
| `location` | string | No | Location code from get_filter_options. |
| `page` | integer | No | Page number for pagination. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/merx/search-closed-solicitations \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"category":"<string>","keywords":"<string>","location":"<string>","page":"<integer>"}'
```

### Search open solicitations

Search for open tender solicitations/RFPs on Merx with keyword, category, location, and publish-date filters. Returns paginated results sorted by relevance. Each result carries an internal_id usable with get_solicitation_detail and get_solicitation_categories.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `category` | string | No | Category code from get_filter_options (e.g., 10034 for EDP Hardware and Software). |
| `keywords` | string | No | Search keywords to filter solicitations by title or content. |
| `location` | string | No | Location code from get_filter_options (e.g., 355 for Ontario, 38000 for All of Canada). |
| `page` | integer | No | Page number for pagination. |
| `publish_date` | string | No | Filter by publish date. Accepted values: HOURS_24, WEEK_1. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/merx/search-open-solicitations \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"category":"<string>","keywords":"<string>","location":"<string>","page":"<integer>","publish_date":"<string>"}'
```

## Next steps

- [All wrapped API providers](https://paywithlocus.com/wapi/index.md): pick another provider.
- [Find and call tools](https://paywithlocus.com/agent/tools.md): price ceilings, async results, and errors.
- [Credits and billing](https://paywithlocus.com/agent/billing.md): what a call costs and how to add credits.
- [Agent docs index](https://paywithlocus.com/agent/index.md): every Locus agent page.