Skip to content
Data.co Marketplace← Data.co for Enterprise
data.coMarketplace
Developers · API v1 live

Build on marketplace data.

One scoped key for REST and MCP. The API at api.data.co/v1 and the MCP server at api.data.co/mcp are live; create a key at app.data.co and make your first call today.

At a glance

The shape of a request

Bearer auth, query-string filters, cursor pagination and a request id on every response.
terminalIllustrative
curl -G https://api.data.co/v1/datasets/lawco-court-opinions/records \
  -H "Authorization: Bearer dc_live_<prefix>_<secret>" \
  --data-urlencode "q=easement" \
  --data-urlencode "limit=20"

# 200 → { "data": [...], "meta": { "request_id": "req_…", "next_cursor": "…", "warnings": [...] }, "error": null }
Integration path

Ship your integration in four steps

All four work today: the documentation, self-serve keys and live LAW.co records.
  1. 1

    Pick datasets

    Read the dataset pages for coverage, fields, license and per-channel status. Decide which blocks you need: source text only, or premium enrichment too.

  2. 2

    Design around the envelope

    Build your client around data, meta and error, cursor pagination, typed error codes and the provenance object, so the same code handles live records and labeled demo records.

  3. 3

    Create a scoped key

    Create an organization key with only the scopes you need — for example datasets:read and legal:read for a read-only research tool, plus mcp:invoke for an agent.

  4. 4

    Call live data

    LAW.co opinions, summaries and the citation graph return live records with demo: false. Synthetic records, like the previews on this site, are flagged demo: true with an X-Dataco-Demo header and never billed.

Core concepts

Six things every integration touches

ConceptWhat to know
API keysOrganization keys in the form dc_live_<prefix>_<secret>, sent as a bearer token. One key works for REST and MCP.
Scopesdatasets:read, datasets:query, legal:read, usage:read and mcp:invoke. Each endpoint checks its own scope.
EnvelopeEvery response returns data, meta and error. meta carries request_id, paging, the demo flag and provider warnings.
PaginationOpaque cursors with a limit of 1–100. No offsets. Send next_cursor back as cursor until it is null.
ProvenanceEach record says where it came from, under which license, when it was retrieved and whether it is derived.
ErrorsBranch on error.code — for example not_configured, rights_restricted, not_entitled, rate_limited or unsupported_operation.
Patterns

What the API is designed to support

Three common shapes of integration, and the endpoints or tools each one leans on.
PatternHow it worksEndpoints and tools
Research assistantA user asks a question; your app searches opinions, fetches the best matches and answers with quotations and citations from the records.GET /legal/cases, GET /legal/cases/{id}
Agent with toolsAn AI agent connected over MCP decides when to search, which documents to read, and how to cite them, with the same permissions as your API key.search_case_law, get_legal_document, list_legal_datasets
Catalog-aware appYour product shows which datasets a customer can use, their license and their status, straight from the catalog, so nothing is hard-coded.GET /datasets, GET /datasets/{id}, GET /datasets/{id}/schema
Status

What is live today

The REST API and MCP server are live with self-serve sign-up, organizations and API keys at app.data.co. LAW.co court opinions, case summaries and the citation graph return live records over both. LAW.co's estate-planning statute reference is not yet populated, bulk downloads await rights confirmation, and the state bill monitor is not offered.

Live keyword search uses LAW.co's legacy endpoint: it is not paginated and returns a random sample of up to 50 matches, so meta.warnings says so on every affected response. The previews on this site are synthetic samples; the API returns live records.

Questions

Developer FAQ

Which languages are supported?

Any language with an HTTP client. There are no official SDKs yet; examples use curl and plain JSON.

Are there rate limits?

Yes. Each key has a per-key limit by plan, and each plan has monthly quotas for API requests, MCP calls and downloads. A 429 tells you which one you hit; honor Retry-After.

Can I correlate requests with my logs?

Send your own X-Request-Id. It is echoed back as X-Client-Request-Id and meta.client_request_id alongside the server's request_id.

Do I need separate keys for REST and MCP?

No. One organization key works for both, as long as it carries the scopes each call needs, including mcp:invoke for tool calls.

Will the API change?

v1 is live and stays stable. Any change that affects integrations will be listed in the changelog.

Where do I report a problem with the docs?

Contact the marketplace team. Include the page and the request_id from the response.

Start building with live data.

API and MCP access is live. Sign up at app.data.co, create a scoped key, or talk to us about your use case.