STARTER and PRO can request stored Full events from any regional edge:
GET https://tokyo.newlistings.pro/v2/full
GET https://ny.newlistings.pro/v2/full
GET https://seoul.newlistings.pro/v2/full
STARTER can query up to 30 days and PRO up to 365 days. FREE keys do not include history.
Request
Send the same bearer key used for the WebSocket:
curl -H "authorization: Bearer YOUR_KEY" \
"https://tokyo.newlistings.pro/v2/full?exchange=upbit,binance&market_type=spot&limit=50"
Query parameters
| Parameter | Type | Notes |
|---|---|---|
before |
integer | Exclusive upper bound in Unix epoch milliseconds. Defaults to the present. |
after |
integer | Inclusive lower bound in Unix epoch milliseconds. Defaults to the start of the plan's history window. |
limit |
integer | Maximum records per page. Defaults to 50; maximum 100. |
cursor |
string | Opaque next_cursor from the previous page. Omit it for the first request. |
exchange |
string | Up to 32 comma-separated exchange identifiers, trimmed and case-insensitive. |
data_type |
string | announcement, tweet, or both as a comma-separated list. |
market_type |
string | Comma-separated parser market types, such as spot,futures. |
username |
string | One exact, case-insensitive post username. |
before, after and limit must be positive safe integers. If both time bounds are supplied, after must be less than before. Time bounds and plan windows apply to detected_time_us. Requests are restricted to the plan's history window and the present; an interval outside that window returns an empty page.
Filters follow the Full filter rules. data_type and market_type are independent and can be combined. Unknown values may return no records; invalid queries return 400 INVALID_REQUEST.
Response
data contains Full events, newest first by detected_time_us. next_cursor identifies the next page, or is null when no more events match. An empty result is:
{
"data": [],
"next_cursor": null
}
Response timestamps are epoch microseconds, even though request bounds are milliseconds. sent_time_us, when present, is the recorded publication timestamp, not the time of the HTTP response. Imported records without a recorded publication timestamp omit this field.
How stored events differ from WebSocket events
History is not a byte-for-byte replay of WebSocket messages.
- Older records can retain earlier
parser.classificationshapes, including an absentcategoryor amarketsarray for exchanges other than Upbit. Treat these fields as optional in history. - Older records can use a storage row ID when no event ID is stored.
- Tied detection timestamps are ordered by descending storage row ID.
- Do not use IDs to join records across endpoints or regional edges.
See Full event fields for the field meanings.
Cursor pagination
Pass the returned next_cursor as cursor to request the next page. Repeat the same filters and any before / after bounds. Continue until next_cursor is null.
For the request above, replace NEXT_CURSOR with the value from its response:
curl --get "https://tokyo.newlistings.pro/v2/full" \
-H "authorization: Bearer YOUR_KEY" \
--data-urlencode "exchange=upbit,binance" \
--data-urlencode "market_type=spot" \
--data-urlencode "limit=50" \
--data-urlencode "cursor=NEXT_CURSOR"
Use the cursor unchanged. It preserves the position between records that share a timestamp; you do not need to calculate a new before value.
See Limits and errors for HTTP errors and retry handling.