The sites people search, as structured records.
An API for property listings, job postings, products, videos and posts, and reviews. Send a search or a URL and get JSON records back, with the same field names every time, from $0.90 per 1,000.
Confirm your email and get $2.00 of trial credit, good for 30 days. No card needed. Trial terms
POST /records/realtorx-api-key: $URAKIMON_API_KEY{ "mode": "property", "propertyUrls": ["https://www.real…", …]} { "source": "realtor", "type": "property", "id": "8753028979", "url": "https://www.realtor.com/realest…", "price": 230000, "beds": 3, "baths": 2, "address": { "text": "4502 Turnsto…", … }, … 33 more fields "event": "property-detail", "collectedAt": "2026-09-20T19:42:12.186Z"}POST /records/indeedx-api-key: $URAKIMON_API_KEY{ "searchQueries": ["software engineer"], "location": "New York, NY", … 4 more}{ "source": "indeed", "type": "job", "id": "c80b716ab53b9509", "url": "https://www.indeed.com/viewjob?…", "title": "Software Engineer III, Infras…", "company": "Google", "location": "New York, NY", "salary": { "text": "$147,000 - $2…", … }, … 32 more fields "event": "job-detail", "collectedAt": "2026-09-20T19:44:41.320Z"}POST /records/amazonx-api-key: $URAKIMON_API_KEY{ "mode": "product", "asins": ["B0H1KXX5TL", "B0F5HPCLGB", …], "country": "US"}{ "source": "amazon", "type": "product", "id": "B0GG9BY46M", "url": "https://www.amazon.com/dp/B0GG9…", "title": "INFINMIND L511 Wireless Bluet…", "brand": "INFINMIND", "price": { "amount": 25.99, … }, "rating": 4.7, … 33 more fields "event": "product-detail", "collectedAt": "2026-09-20T20:57:01.663Z"}POST /records/glassdoorx-api-key: $URAKIMON_API_KEY{ "employerIds": ["9079"], "reviewSort": "recent", "maxItemsPerInput": 150}{ "source": "glassdoor", "type": "review", "id": "105649533", "url": "https://www.glassdoor.com/Revie…", "title": "Strong investment in seller d…", "rating": 5, "pros": "Lots of investment in developm…", "cons": "Takes time to get things done", … 17 more fields "event": "review", "collectedAt": "2026-09-20T19:43:59.965Z"}Pick a kind of data
Five kinds of data and 21 record types, every field documented. All sources
The same six keys open every record
source, type, event, id, url and collectedAt, whichever source it came from. Each source's own fields follow them.
Wait for small runs, queue large ones
A small run answers in the same response. A large one becomes a job: poll it and read its records in pages or as one stream, and a signed webhook reports when it ends.
Up to 500 records: wait for them
Example- your search or URLs
POST /records/amazon - 200every record, the run's counters and how long it took
Any size: submit a job
Example- answers at once with a job id
POST /jobs/amazon - queuedrunningpoll
GET /jobs/{id}, or read pages as they are written - one final state, never changed afterwards
- succeeded
- failed
- cancelled
With webhookUrl in the request, the final state is also sent to you, signed:
webhook-id: b8e2f4a1-…
webhook-timestamp: 1758393836
webhook-signature: v1,K5oZfzN9…
{
"deliveryId": "b8e2f4a1-…",
"id": "0f0c4a18-…",
"site": "amazon",
"status": "succeeded",
"count": 1840,
"error": null,
"finishedAt": 1758393836400
}Ids and the signature are shortened. Verify with the Standard Webhooks library for your language, then answer 2xx.
One header, one JSON body
Send it from any language that speaks HTTP. The records come back as JSON, in the shape shown here.
curl
curl -X POST https://api.urakimon.com/records/amazon \
-H "x-api-key: $URAKIMON_API_KEY" \
-H "content-type: application/json" \
-d '{
"mode": "product",
"asins": ["B0H1KXX5TL", "B0F5HPCLGB", "B0GG9BY46M"],
"country": "US"
}'Python
import os
import requests
res = requests.post(
"https://api.urakimon.com/records/amazon",
headers={"x-api-key": os.environ["URAKIMON_API_KEY"]},
json={
"mode": "product",
"asins": [
"B0H1KXX5TL",
"B0F5HPCLGB",
"B0GG9BY46M"
],
"country": "US"
},
)
res.raise_for_status()
records = res.json()["records"]Node
const res = await fetch("https://api.urakimon.com/records/amazon", {
method: "POST",
headers: {
"x-api-key": process.env.URAKIMON_API_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"mode": "product",
"asins": ["B0H1KXX5TL", "B0F5HPCLGB", "B0GG9BY46M"],
"country": "US"
}),
});
const { records } = await res.json();{ "source": "amazon", "type": "product", "id": "B0GG9BY46M", "url": "https://www.amazon.com/dp/B0GG9BY46M", "title": "INFINMIND L511 Wireless Bluetooth Mou…", "brand": "INFINMIND", "price": { "amount": 25.99, … }, "rating": 4.7, … 33 more fields "event": "product-detail", "collectedAt": "2026-09-20T20:57:01.663Z"}Pay per record delivered
Buy credit from $10.00. Each record draws its listed price from your balance.
- 35 pricesOne per billed event, from $0.90 per 1,000 records.Every price
- $2.00 to tryOn a new account, for 30 days, spent at list prices.How the trial works
- $0For a request that returns no records.How billing works
Your first request
Create a key
Keys live on the account page. Each request carries one in a header.
Send one request
A path and a JSON body; larger runs go through a job.
Read the records
Every record starts with the same envelope, then the fields of Amazon (62 fields).
A balance, run by run
| Run | Asked for | Delivered | Cost | Credit left |
|---|---|---|---|---|
amazon/product | 729 | 729 | $3.50 | $6.50 |
glassdoor/employer-detail | 698 | 698 | $3.00 | $3.50 |
indeed/job | 465 | 465 | $2.00 | $1.50 |
loopnet/listing | 2,000 | 749 stopped at zero | $1.50 | $0.00 |
Plans from $49.00 a month include credit at a lower rate per record. Compare plans
Keys and spend, per event
Create, rotate and revoke keys. Each key shows this month's records and spend by event, at list prices. A key's webhook signing secret sits on its row.
| Key | Id | Created | Last used |
|---|---|---|---|
| production | key_7f3a… | 2026-09-14 | today |
| Event | Records | Per 1,000 | Cost |
|---|---|---|---|
amazon/product | 1,200 | $4.80 | $5.76 |
glassdoor/employer-detail | 400 | $4.30 | $1.72 |
indeed/job | 250 | $4.30 | $1.07 |
| Total | 1,850 | $8.55 |
Prices are the current list; the counts are illustrative. GET /usage returns the same breakdown for your key.
Questions
Getting started
How do I get an API key?
Sign in on the account page and create a key there. A new key is shown once, so copy it before you leave the page. Send it in the x-api-key header on every request.
Which fields does each source return?
Every source page lists all of its fields with their types and what they hold, next to an example record. Start from the sources list.
Do I have to page through results?
Not at 500 records or fewer: POST /records/{source} returns them all in one response. Larger runs go through POST /jobs/{source}, which you read in pages or as one NDJSON stream. See records and jobs.
Billing
What counts as a record?
One item delivered to you, such as a product, a job posting or a comment. Each record is billed once, under the event name it carries in its event field.
What happens when a request fails?
You pay only for records that were delivered. A request that fails before delivering anything costs nothing, and the response or the job's error field says what went wrong.
Can I cap what I spend?
Yes. Each record is paid from credit you bought up front, so spend stops at your balance. maxItems caps each request, and GET /usage shows spend so far. See pricing and billing.
Data
How fresh are the records?
They are collected when you send the request. Each record carries collectedAt, the UTC time it was read.
How long can I read a job's records?
Finished jobs and their records stay readable for 24 hours, then they are removed. Save what you need before then.
Can I stop a job that is running?
Yes: DELETE /jobs/{id} cancels it. Records it already wrote stay readable and stay billed.
Send your first request
Create a key, paste this into a terminal and read the Amazon records it returns.
curl -X POST https://api.urakimon.com/records/amazon -H "x-api-key: $URAKIMON_API_KEY" -H "content-type: application/json" -d '{"mode":"product","asins":["B0H1KXX5TL","B0F5HPCLGB","B0GG9BY46M"],"country":"US"}'