Discover/Copyright API
live

Copyright APIpublicrecords.copyright.gov

Search and retrieve U.S. Copyright Office registration and recordation records via 2 endpoints. Get titles, claimants, authors, dates, and structured catalog data.

This API takes change requests — .
Endpoint health
monitored
get_record_details
search_copyright
Checks pendingself-healing
Endpoints
2
Updated
2h ago

What is the Copyright API?

The Copyright Office Public Records API provides access to the U.S. Copyright Office's CPRS database through 2 endpoints, returning registration and recordation records with fields including registration numbers, claimants, authors, titles, and structured catalog properties. The search_copyright endpoint accepts keyword queries across registration numbers, author names, titles, and publishers, while get_record_details returns the full catalog entry for any matched record.

This call costs1 credit / call— charged only on success
Try it
Page number for pagination (1-based).
Number of results per page (1-50).
Search query — copyright registration numbers (e.g. RE0000897325), author names, titles, publishers, or claimants.
api.parse.bot/scraper/3714fec5-cf40-4b14-964e-b162a7ac0dbd/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/3714fec5-cf40-4b14-964e-b162a7ac0dbd/search_copyright?query=RE0000897325' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace publicrecords-copyright-gov-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: U.S. Copyright Office Public Records — search, browse, and fetch full details."""
from parse_apis.publicrecords_copyright_gov_api import CopyrightOffice, RecordNotFound

client = CopyrightOffice()

# Search for copyright records by keyword; limit= caps total items fetched.
for summary in client.record_summaries.search(query="Hotel California", limit=5):
    print(summary.title, "|", summary.type_of_record, "|", summary.representative_date)

# Drill-down: take the first result and navigate to its full detail record.
hit = client.record_summaries.search(query="Hotel California", limit=1).first()
if hit is not None:
    record = hit.details()
    print("Title:", record.title)
    print("Registration:", record.registration_number, record.registration_date)
    print("Class:", record.registration_class, "| Status:", record.registration_status)
    print("Claimants:", record.claimants)
    for person in record.names:
        print(f"  {person.name} — {', '.join(person.roles)}")
    if record.properties.renewal_registration_for:
        print("Renews:", record.properties.renewal_registration_for)

# Point lookup by a known public_records_id discovered from the search.
if hit is not None:
    try:
        detail = client.records.get(public_records_id=hit.public_records_id)
        print("Fetched:", detail.record_type_label)
    except RecordNotFound:
        print("Record no longer available")

print("exercised: record_summaries.search / details / records.get")
All endpoints · 2 totalmissing one? ·

Search copyright records by keyword (registration numbers, authors, publishers, claimants, titles, etc.). Returns paginated results sorted by relevance. Each result includes a public_records_id that can be passed to get_record_details for full information.

Input
ParamTypeDescription
pageintegerPage number for pagination (1-based).
limitintegerNumber of results per page (1-50).
queryrequiredstringSearch query — copyright registration numbers (e.g. RE0000897325), author names, titles, publishers, or claimants.
Response
{
  "type": "object",
  "fields": {
    "page": "Current page number",
    "limit": "Results per page",
    "results": "Array of copyright records with public_records_id, type_of_record, title, registration_number, registration_date, recordation_date, recordation_number, type_of_work, representative_date, claimants, names, and system_of_origin",
    "total_results": "Total number of matching records"
  },
  "sample": {
    "data": {
      "page": 1,
      "limit": 10,
      "results": [
        {
          "names": [
            {
              "name": "Felder, Don",
              "roles": [
                "author"
              ]
            },
            {
              "name": "Henley, Don",
              "roles": [
                "author",
                "claimant"
              ]
            }
          ],
          "title": "Hotel California.  w & m Don Henley, Glenn Frey & Don Felder.",
          "claimants": [
            "Don Henley & Glenn Frey (A)"
          ],
          "type_of_work": "Music",
          "type_of_record": "registration",
          "recordation_date": null,
          "system_of_origin": "voyager",
          "public_records_id": "voyager_7778017",
          "registration_date": "2004-02-09",
          "recordation_number": null,
          "registration_number": "RE0000897325",
          "representative_date": "2004-02-09"
        }
      ],
      "total_results": 5
    },
    "status": "success"
  }
}

About the Copyright API

What the API covers

This API exposes records from the U.S. Copyright Office Public Records System (CPRS), covering both copyright registrations and recordations. Records include metadata such as registration_number, registration_date, recordation_date, type_of_work (e.g. Music, Literary Work), and type_of_record (either registration or recordation). Each record originates from a named source system (the system_of_origin field, e.g. voyager) and carries a stable public_records_id used for detail lookups.

Searching records

The search_copyright endpoint accepts a required query string and supports pagination via page (1-based) and limit (1–50 results per page). Queries can target registration numbers like RE0000897325, author names, titles, publishers, or claimants. The response includes total_results so you can calculate page counts, and each result in the results array carries a public_records_id to pass to the detail endpoint.

Retrieving full record details

Passing a public_records_id to get_record_details returns the complete catalog entry: a names array with associated persons and their roles, a claimants array, variant_titles for alternate or translated titles, a type_of_work classification, and a properties object containing all structured fields from the copyright catalog. This is where granular registration data — not surfaced in search results — becomes accessible.

Reliability & maintenance

The Copyright API is a managed, monitored endpoint for publicrecords.copyright.gov — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when publicrecords.copyright.gov changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official publicrecords.copyright.gov API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Verify copyright ownership for a specific work by querying the claimants and registration_date fields
  • Look up all registrations associated with a given author or publisher using search_copyright with a name query
  • Retrieve variant titles for a work to identify alternate or translated versions via get_record_details
  • Build a rights clearance tool that checks registration status before licensing content
  • Cross-reference registration numbers found in contracts against CPRS records for due diligence
  • Catalog the type_of_work distribution across a set of queried records (Music, Literary Work, etc.)
  • Identify recordation dates for copyright transfers and assignments to track chain of title
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does the U.S. Copyright Office have an official developer API?+
The Copyright Office does not currently offer a public REST API for CPRS data. The public records are accessible through the web interface at publicrecords.copyright.gov, but there is no documented developer API with machine-readable endpoints.
What does get_record_details return beyond what search_copyright shows?+
search_copyright returns a summary: public_records_id, type_of_record, title, registration_number, registration_date, and recordation_date. get_record_details adds the names array with roles, claimants, variant_titles, type_of_work, system_of_origin, and the full properties object containing all structured catalog fields for that record.
Does the API return the actual deposited work or registration documents?+
No. The API returns catalog metadata only — registration numbers, dates, claimants, names, titles, and structured properties. Deposited copies and registration certificates are held physically by the Copyright Office and are not part of this data. You can fork this API on Parse and revise it to add an endpoint that links out to the Copyright Office's official request process for physical records.
Can I filter search results by type_of_work or date range?+
The search_copyright endpoint accepts a free-text query string and pagination parameters (page, limit) but does not currently expose dedicated filter parameters for type_of_work, registration_date range, or type_of_record. You can fork this API on Parse and revise it to add those filter inputs if your use case requires scoped queries.
How large can result sets be, and how does pagination work?+
The total_results field in every search response tells you the full count of matching records. Results are paginated with a maximum of 50 per page (limit parameter). Setting page to 1 returns the first page; increment to walk through all results. Very broad queries may return large total_results counts, so narrow queries by using specific registration numbers or exact names where possible.
Page content last updated . Spec covers 2 endpoints from publicrecords.copyright.gov.
Related APIs in Government PublicSee all →
judyrecords.com API
Search and retrieve detailed court records including case information and statistics from a comprehensive legal database. Access specific case details and view aggregated court record stats to research legal proceedings and case outcomes.
repertoire.bmi.com API
Search for music writers and composers to discover their complete songview catalog directly from BMI's repertoire database. Find detailed information about songs, compositions, and musical works created by your favorite artists and industry professionals.
tmsearch.uspto.gov API
Search USPTO trademarks by wordmark or serial number, and retrieve detailed case information (status, owners, classes, and prosecution history) for a specific serial number.
musicbrainz.org API
Search MusicBrainz for artists and recordings, then fetch detailed metadata for artists, recordings, releases, and release groups, including credits, tags/genres, and track listings.
justice.gov API
Search and retrieve official U.S. Department of Justice press releases. Find information on DOJ announcements, enforcement actions, settlements, and legal proceedings across all topic areas. Access full press release details including case summaries, entities involved, and filing dates.
qPublic Property Records API
Search for properties on qPublic and access comprehensive details including owner information, valuations, building and land characteristics, sales history, tax exemptions, and fees. Retrieve complete property records to research real estate, verify ownership, or analyze property values.
discovery.nationalarchives.gov.uk API
Search and browse The National Archives Discovery catalogue to find historical records, discover their creators, and explore archived collections. Get detailed information about specific records and navigate through the archive's organizational structure to uncover primary sources and historical documents.
registers.maryland.gov API
Search Maryland estate records and retrieve detailed case information including Personal Representative and Attorney contacts. Access newly filed estates by county and date range, look up claims, and retrieve docket history for probate research and due-diligence workflows.