# Justetf — Wrapped API

> **You are on:** `https://api.beta.paywithlocus.com/api` | [llms.txt](https://beta.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 compare thousands of ETFs listed on justETF, with access to detailed profiles, key metrics (TER, fund size, asset class, currency), and full monthly performance history. Filter results by asset class, fund currency, expense ratio, and more.

**Category:** Finance & Markets | **Website:** [justetf.com/](https://justetf.com/) | **Docs:** [parse.bot/marketplace/9b0e18a9-ca27-4387-b170-39b5e2066411/justetf-com-api](https://parse.bot/marketplace/9b0e18a9-ca27-4387-b170-39b5e2066411/justetf-com-api)

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

## Access

**Base URL:** `https://api.beta.paywithlocus.com/api/wrapped/credits/justetf/`
**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 etf price

Retrieve the latest quote/price for a specific ETF by ISIN. Returns the current price from XETRA in the requested currency, along with day-over-day change (absolute and percentage), previous close, and 52-week low/high. Data is sourced from the justETF real-time quote API.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `currency` | string | No | Currency code for the price quote (e.g. 'EUR', 'USD', 'GBP', 'CHF'). Defaults to EUR. |
| `isin` | string | Yes | 12-character ISIN identifier of the ETF (e.g. 'IE00B5BMR087') |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/justetf/get-etf-price \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"currency":"<string>","isin":"<string>"}'
```

### Get etf price history

Retrieve a daily price time series for a specific ETF over a date range. Returns one entry per calendar day (including weekends which repeat the prior close). Prices are in EUR. Defaults to the last 30 days when no date range is specified.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `from_date` | string | No | Start date of the price range in YYYY-MM-DD format. Defaults to 30 days before today. |
| `isin` | string | Yes | 12-character ISIN identifier of the ETF (e.g. 'IE00B5BMR087') |
| `to_date` | string | No | End date of the price range in YYYY-MM-DD format. Defaults to today. |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/justetf/get-etf-price-history \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"from_date":"<string>","isin":"<string>","to_date":"<string>"}'
```

### Get etf profile

Retrieve profile information for a specific ETF by its ISIN. Returns the ETF's key metrics including TER, fund size, replication method, distribution policy, inception date, and YTD return. Uses the search index internally; returns stale_input if the ISIN is not found. When include_country_allocation is enabled, makes an additional request to the profile page and includes the ETF's country breakdown.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `include_country_allocation` | boolean | No | When true, includes a country_allocation array in the response with the ETF's country breakdown (country name and allocation percentage). |
| `isin` | string | Yes | 12-character ISIN identifier of the ETF (e.g. 'IE00B5BMR087') |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/justetf/get-etf-profile \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"include_country_allocation":"<boolean>","isin":"<string>"}'
```

### Get monthly performance

Retrieve monthly performance heatmap data for a specific ETF. Returns an array of monthly return percentages organized by year and month, covering the ETF's full history since inception. Each entry contains the year, month name (Jan-Dec), and return percentage. Requires a Wicket AJAX session on the profile page.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `isin` | string | Yes | 12-character ISIN identifier of the ETF (e.g. 'IE00B5BMR087') |

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

### Search etfs

Full-text search over justETF's ETF database. Matches ISIN, WKN, ticker, or name against the query. Results are sorted by fund size descending. Supports offset-based pagination via start/length. Filters narrow results by asset class or fund currency. Returns total count and a page of ETF summaries.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `asset_class` | string | No | Filter by asset class. Confirmed values: 'class-equity', 'class-bonds'. Additional values may be accepted by the site. |
| `fund_currency` | string | No | Filter by fund currency ISO code (e.g. 'EUR', 'USD', 'GBP', 'CHF') |
| `length` | integer | No | Number of results per page (max 100) |
| `query` | string | No | Search query term (ISIN, WKN, ticker, or name) |
| `start` | integer | No | Pagination offset (0-based index of first result) |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/justetf/search-etfs \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"asset_class":"<string>","fund_currency":"<string>","length":"<integer>","query":"<string>","start":"<integer>"}'
```

### Specialized equity filter

Screen for equity ETFs denominated in EUR with TER below 0.3%. Returns matching results sorted by fund size descending. Useful for identifying low-cost European equity ETFs. The asset class (equity) and currency (EUR) filters are fixed; the caller controls only the result count.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `limit` | integer | No | Maximum number of results to return |

```bash
curl -X POST https://api.beta.paywithlocus.com/api/wrapped/credits/justetf/specialized-equity-filter \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"limit":"<integer>"}'
```

## Next steps

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