API
REST API
The same data as plain JSON: listings, samples and data types.
Base address: https://mora.market/api/v1. Answers are JSON. Reads need no account and can be called from a browser.
Search listings
GET
/listingsPrivate listings on Mora. For free public datasets, use the search_listings tool or the dataset search.
| Parameter | Type | What it does |
|---|---|---|
q |
string | Words to look for in the title, type and description |
type |
string | A data type slug, from /data-types |
status |
string | raw, labeled or verified |
curl "https://mora.market/api/v1/listings?q=hvac&status=verified"{
"listings": [
{
"id": "commercial-hvac-service-calls",
"title": "Commercial HVAC service calls",
"type": "field-service-records",
"status": "verified",
"volume": "412,000 work orders",
"years": "2016 to 2025",
"price": "$180k",
"license": "Non-exclusive",
"provider": "Provider 181C",
"url": "https://mora.market/datasets/commercial-hvac-service-calls/",
"preview": true,
"source": ["ServiceTitan: work orders and callbacks"],
"schema": [{ "name": "complaint" }, { "name": "diagnosis" }]
}
],
"note": "Listings with \"preview\": true are examples, not real offers."
}| Field | Meaning |
|---|---|
preview |
true for an example listing shown while the first providers come on. Not an offer. |
provider |
Always an anonymous id |
size |
How big it is, counted by Mora: records, or lines of code, files and commits for a repository. null until Mora has received the data; volume is only what the provider says |
schema |
What each record holds. For a real listing, written by the provider's agent |
standard, coverage, parts |
When the dataset follows a standard: which parts it holds |
Get one listing
GET
/listings/{id}curl https://mora.market/api/v1/listings/commercial-hvac-service-callsAnswers 404 with { "error": "not_found" } for an id that is not live and public.
Get a sample
GET
/listings/{id}/sampleThe records Mora drew at random from everything the provider sent. Nobody picked them.
{
"listing": "Commercial HVAC service calls",
"preview": true,
"records": [
{ "complaint": "3rd floor 79F, thermostat set to 72F", "diagnosis": "failed condenser fan capacitor", "callback_within_30_days": false }
],
"note": "Illustrative records for a preview listing, not a real provider's data."
}records is null when no sample has been drawn yet.
List data types
GET
/data-typesThe kinds of records traded and what labs ask for in each.
Create a listing
POST
/listingsOAuth, providerThe same fields as the create_listing tool. See its parameters in the tools reference.
curl https://mora.market/api/v1/listings \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{ "title": "Tier 2 support escalations", "recordType": "customer-support-conversations",
"system": "Zendesk", "years": "2021 to 2026", "volume": "About 88,000 threads",
"contents": "The customer problem, every reply, and what fixed it.",
"owns": "yes", "personal": "no", "contracts": "yes", "visibility": "private" }'The listing is saved for Mora to review. Nobody sees it until Mora approves it.