# Get a US stock quote with x402stock's API, no API key needed

x402stock's API returns the latest available price for a US-listed stock from one GET request, with no account, API key or plan. A quote costs $0.01. Send `GET https://agents.x402stock.xyz/zcj/8vjz4bf2858y/api/v1/quote/{ticker}`, and the storefront answers with a 402: the price quote, which you pay over x402 or MPP (the wallet rails, settling in USDC) and then retry to receive the data.

## At a glance

- **Endpoint:** `GET https://agents.x402stock.xyz/zcj/8vjz4bf2858y/api/v1/quote/{ticker}`. `ticker` is an uppercase US-listed symbol, such as `AAPL`.
- **Body:** none. The ticker in the path is the only input.
- **Price:** $0.01 for a quote. A snapshot of the same ticker is $0.01.
- **Payment:** the 402 price quote, paid over x402 (Base USDC) or MPP (Tempo USDC), then the same request retried with the proof.
- **Response:** JSON with `ticker`, `source`, `as_of` and a `data` object holding `price`, `change`, `change_percent`, `day`, `previous_close`, `timestamp`, `is_delayed` and `delayed_by`.
- **Limits:** one ticker per request, and the price is 15 minutes delayed.
- **Full purchase flow:** [the buyer skill](https://agents.x402stock.xyz/zcj/8vjz4bf2858y/SKILL.md)

## Get a quote and a snapshot

1. Send the request without payment:

   ```bash
   curl -i https://agents.x402stock.xyz/zcj/8vjz4bf2858y/api/v1/quote/AAPL
   ```

   The storefront answers `402 Payment Required`. The 402 quotes the price of this one request. Nothing is charged at this step, so you can stop here at no cost.

2. Pay the challenge and send the identical request again with the proof attached. [The buyer skill](https://agents.x402stock.xyz/zcj/8vjz4bf2858y/SKILL.md) has the steps for each rail. Each request gets its own 402, so you pay a fresh challenge for every call.

3. Read the `200` response. The example quote for AAPL paid $0.01 and returned a body with these fields and types:

   ```json
   {
     "ticker": "string",
     "data": {
       "price": "number",
       "change": "number",
       "change_percent": "number",
       "day": {"open": "number", "high": "number", "low": "number", "close": "number", "volume": "number", "vwap": "number"},
       "previous_close": "number",
       "timestamp": "string",
       "is_delayed": "boolean",
       "delayed_by": "string"
     },
     "source": "string",
     "as_of": "string",
     "feedback": {"endpoint": "string", "method": "string", "free": "boolean", "note": "string"}
   }
   ```

   `price` is the close of the most recent 1-minute bar, and `day` is today's open, high, low, close, volume and VWAP. Check `is_delayed` and `delayed_by` before you treat the price as current.

4. For more context on the same ticker, request a snapshot. It goes through the same 402 exchange at $0.01:

   ```bash
   curl -i https://agents.x402stock.xyz/zcj/8vjz4bf2858y/api/v1/snapshot/AAPL
   ```

   The example snapshot of AAPL paid $0.01 and returned `ticker`, `source`, `as_of`, `feedback` and a `data` object with `change`, `change_percent`, `day`, `previous_day` and `last_minute_bar`. `previous_day` has the prior session's open, high, low, close, volume and VWAP. `last_minute_bar` adds `trade_count`, `accumulated_volume` and a `timestamp`.

## Choose the call

| You need | Call | Price |
| --- | --- | --- |
| The latest price, today's change and the previous close | `/api/v1/quote/{ticker}` | $0.01 |
| The previous day's full bar and the last minute bar as well | `/api/v1/snapshot/{ticker}` | $0.01 |
| Both for one ticker | Two requests | $0.02 |

## What is charged and when

- An unpaid 402 charges nothing. You are charged only when you pay the challenge.
- Each request is billed on its own. A payment cannot be reused for a different request.
- A quote or snapshot costs less than the $0.50 card floor for a single call. The [buyer skill](https://agents.x402stock.xyz/zcj/8vjz4bf2858y/SKILL.md) covers the other ways to pay.
- A quote takes one ticker and no query parameters. Multi-ticker and historical calls are separate operations in the [Stock Quotes & Market Data reference](https://agents.x402stock.xyz/zcj/8vjz4bf2858y/services/stock-quotes/openapi.json).

## Find other x402stock data by service

Every other operation sits under one of the storefront's services. Each service has its API reference at `https://agents.x402stock.xyz/zcj/8vjz4bf2858y/services/{slug}/openapi.json` and its prices at `https://agents.x402stock.xyz/zcj/8vjz4bf2858y/services/{slug}`. To find an operation by task, search with `https://agents.x402stock.xyz/zcj/8vjz4bf2858y/openapi.json?q={text}`.

| Service | `slug` |
| --- | --- |
| Stock Quotes & Market Data | `stock-quotes` |
| Company Fundamentals & Reference | `company-fundamentals` |
| Technical Analysis | `technical-analysis` |
| Options & Short Interest | `options-short-interest` |
| SEC Filings & Ownership | `sec-filings` |
| Screeners, Scores & AI Research | `screeners-scores-research` |
| Sentiment & Positioning | `sentiment-positioning` |
| US Macro & Rates | `us-macro-rates` |
| Global Macro, FX & Commodities | `global-fx-commodities` |
| Crypto & Perps | `crypto-perps` |
| On-Chain & Tokenized Assets | `onchain-tokenized-assets` |
| Market Archive | `market-archive` |
| Government & Policy | `government-policy` |
| FDA, Trials & Patents | `fda-trials-patents` |

The slug selects a reference document. Never send it as a request value.

## Errors

| Response | Meaning | Action |
| --- | --- | --- |
| `402` with a `payment` block and no `reason` | The normal per-call charge | Pay the challenge and retry with the proof attached |
| `settlement_failed` | The signed payment did not settle. `settlementReason` says why, for example `insufficient_funds` | Fix the wallet, then send a fresh request for a new challenge |
| `payment_request_mismatch` (409) | A payment was reused for a different request | Request a fresh 402 and pay that one |
| `payment_provider_unavailable` | A transient failure reaching the payment provider | Retry unchanged, with backoff |
| Any other status after payment | The upstream API's own status and body | Read the body and check the service's API reference |

## Frequently asked questions

### Is the x402stock stock quote real-time?

No. The quote endpoint is currently 15 minutes delayed. Each response carries `is_delayed: true` and a `delayed_by` value, so a script can confirm the delay from the response itself.

### Do I need an API key or an account to get a stock quote?

No. A per-request call needs no account, API key, plan or registration. The 402 states the price, you pay it over x402 or MPP, and the retried request returns the data.

### How much does a stock quote cost?

$0.01 per quote and $0.01 per snapshot. The 402 states the exact amount before you pay anything, and each request is charged separately.

### Can I get quotes for several tickers in one call?

Not from the quote endpoint, which takes one ticker in its path. Each ticker is a separate request and a separate 402. Multi-ticker operations are listed in the Stock Quotes & Market Data API reference.

## Keep reading

- [Buyer skill](https://agents.x402stock.xyz/zcj/8vjz4bf2858y/SKILL.md): the full purchase flow
- [How to pay](https://agents.x402stock.xyz/zcj/8vjz4bf2858y/payment.md): x402, MPP, card and Credits
- [Stock Quotes & Market Data API reference](https://agents.x402stock.xyz/zcj/8vjz4bf2858y/services/stock-quotes/openapi.json)
- [Services and prices](https://agents.x402stock.xyz/zcj/8vjz4bf2858y/services)
- [Error reference](https://agents.x402stock.xyz/zcj/8vjz4bf2858y/errors.md)

---

Updated 2026-10-16. All x402stock guides: https://agents.x402stock.xyz/guides.md. Storefront: https://agents.x402stock.xyz/zcj/8vjz4bf2858y/llms.txt.
