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

RequestExample
POST /records/realtorx-api-key: $URAKIMON_API_KEY{  "mode": "property",  "propertyUrls": ["https://www.real…", …]} 
Realtor.com · property200 OKExample
{  "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"}
Example Realtor.com property$1.40 per 1,000All 57 fields
RequestExample
POST /records/indeedx-api-key: $URAKIMON_API_KEY{  "searchQueries": ["software engineer"],  "location": "New York, NY",  … 4 more}
Indeed · job200 OKExample
{  "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"}
Example Indeed job$5.25 per 1,000All 65 fields
RequestExample
POST /records/amazonx-api-key: $URAKIMON_API_KEY{  "mode": "product",  "asins": ["B0H1KXX5TL", "B0F5HPCLGB", …],  "country": "US"}
Amazon · product200 OKExample
{  "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"}
Example Amazon product$4.80 per 1,000All 55 fields
RequestExample
POST /records/redditx-api-key: $URAKIMON_API_KEY{  "mode": "posts",  "subreddits": ["Python"],  … 2 more}
Reddit · post200 OKExample
{  "source": "reddit",  "type": "post",  "id": "t3_1wkziub",  "url": "https://www.reddit.com/r/Python…",  "title": "State of the art in Python 20…",  "score": 427,  "upvoteRatio": 0.9383983572895277,  "commentCount": 167,  … 29 more fields  "event": "post",  "collectedAt": "2026-09-20T19:44:36.052Z"}
Example Reddit post$2.10 per 1,000All 36 fields
RequestExample
POST /records/glassdoorx-api-key: $URAKIMON_API_KEY{  "employerIds": ["9079"],  "reviewSort": "recent",  "maxItemsPerInput": 150}
Glassdoor · review200 OKExample
{  "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"}
Example Glassdoor review$4.30 per 1,000All 21 fields

Pick a kind of data

Five kinds of data and 21 record types, every field documented. All sources

  • property agent listing

    From $0.90 per 1,000 records

  • job review employer

    From $4.30 per 1,000 records

  • product seller

    From $4.80 per 1,000 records

  • video profile comment transcript channel playlist post community

    From $1.80 per 1,000 records

  • review employer

    From $4.30 per 1,000 records

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
  1. POST /records/amazon
    your search or URLs
  2. 200
    every record, the run's counters and how long it took

Records or jobs?

Any size: submit a job

Example
  1. POST /jobs/amazon
    answers at once with a job id
  2. queuedrunning
    poll GET /jobs/{id}, or read pages as they are written
    • succeeded
    • failed
    • cancelled
    one final state, never changed afterwards

With webhookUrl in the request, the final state is also sent to you, signed:

DeliveryExample
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.

How jobs work Verify a delivery

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();
200 OK · Amazon productExample
{  "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.

Your first request

  1. Create a key

    Keys live on the account page. Each request carries one in a header.

  2. Send one request

    A path and a JSON body; larger runs go through a job.

  3. Read the records

    Every record starts with the same envelope, then the fields of Amazon (62 fields).

A balance, run by run

$10.00 credit
Each run: records asked for and delivered, its cost and the credit left
RunAsked forDeliveredCostCredit left
amazon/product729729$3.50$6.50
glassdoor/employer-detail698698$3.00$3.50
indeed/job465465$2.00$1.50
loopnet/listing2,000749 stopped at zero$1.50$0.00
Example: $10.00 of credit across four runs at list prices.

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.

Open your account

Your keys and usageExample account
KeyIdCreatedLast used
productionkey_7f3a…2026-09-14today
Usage this month, by event
EventRecordsPer 1,000Cost
amazon/product1,200$4.80$5.76
glassdoor/employer-detail400$4.30$1.72
indeed/job250$4.30$1.07
Total1,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.

One request: Amazon
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"}'