# US Copyright Office Records Scraper (`scrapers_lat/us-copyright-records-scraper`) Actor

Search 8M+ U.S. Copyright Office registrations and recordations: titles, claimants and owners, authors, publishers, registration class, dates, plus assignment and transfer chain-of-title parties. JSON, CSV, Excel.

- **URL**: https://apify.com/scrapers_lat/us-copyright-records-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** Business, Lead generation, Developer tools
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $12.75 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## US Copyright Office Records Scraper

Search the **U.S. Copyright Office public catalog** — more than **8 million** copyright
**registrations** and **recordations** — by owner, author, work title, or record number,
and get back clean, structured data. Registrations tell you who owns the copyright in a
song, film, book, photograph, software program or sound recording. Recordations expose the
**chain of title**: assignments, transfers, security interests and mergers, with the parties
on each side of the deal.

No account, no API key. Filter by record type, registration class, type of work, name and
year, then export to JSON, CSV or Excel.

### A real registration result

Here is one real record, with every field the actor returns:

```json
{
  "recordType": "registration",
  "copyrightNumber": "PA0001208965",
  "registrationNumber": "PA0001208965",
  "title": "Beyonce interlude ; Daddy.",
  "primaryTitles": ["Beyonce interlude ; Daddy."],
  "otherTitles": ["Daddy"],
  "registrationClass": "PA",
  "registrationClassLabel": "Performing arts work",
  "typeOfWork": "music",
  "typeOfWorkLabel": "Music",
  "registrationStatus": "published",
  "authors": ["Knowles, Beyonce", "Beyonce"],
  "authorStatement": ["words & music: Beyonce Knowles."],
  "claimants": ["Hitco Music Publishing, LLC (d.b.a. Hitco South), Beyonce Publishing"],
  "publishers": [],
  "representativeDate": "2003-09-05",
  "registrationDate": "2003-09-05",
  "publicationDate": "2003-06-24",
  "creationDate": "2003",
  "largerWork": ["Dangerously in love. — Columbia CK 86386, c2003."],
  "notes": ["2nd song is hidden track.", "Performed by Beyonce."],
  "controlNumber": "11996667",
  "systemOfOrigin": "voyager",
  "detailUrl": "https://publicrecords.copyright.gov/detailed-record/voyager_11996667",
  "source": "U.S. Copyright Office public records (CPRS)"
}
```

### A real recordation result (chain of title)

Recordations show recorded transfers. This one is a recorded assignment of the film
project *The Cure* to Netflix:

```json
{
  "recordType": "recordation",
  "copyrightNumber": "V15047D500",
  "recordationNumber": "V15047D500",
  "title": "The Cure ;Project.",
  "recordationItemType": "Assignment",
  "firstParty": ["Guacamole Airlines LLC", "Ministry of Arts and Interrogation, LLC"],
  "secondParty": ["Netflix Entertainment, LLC"],
  "numberOfTitles": 1,
  "numberOfPages": "1",
  "executionDate": "04Aug26",
  "recordationDate": "2026-08-11",
  "representativeDate": "2026-08-11",
  "notes": ["Short Form Assignment."],
  "serviceRequestNumber": "58045",
  "detailUrl": "https://publicrecords.copyright.gov/detailed-record/rmm_voyager_V01504750000000",
  "source": "U.S. Copyright Office public records (CPRS)"
}
```

### What you can search

- **Owner / author / party name** — a copyright claimant (owner), author, publisher, or a
  party to a recorded transfer. Each name runs as its own phrase search, e.g. `Netflix`,
  `Sony Music`, `Taylor Swift`.
- **Work title** — e.g. `Stranger Things`, `The Great Gatsby`.
- **Copyright / registration / recordation number** — exact lookups such as `PA0001208965`
  or `V15046D767`.
- **Advanced search terms** — quoted phrases, boolean `AND` / `OR`, `-` exclusion and `*`
  wildcards, e.g. `"walt disney" AND pixar`.

Leave every search box empty to browse the newest records, filtered only by the options below.

### Filters

- **Record type** — all records, registrations only, or recordations only (assignments and
  transfers).
- **Registration class** — TX (literary / software), PA (performing arts: music, film,
  drama), VA (visual arts), SR (sound recordings), SE (serials), PR (preregistration),
  RE (renewals).
- **Type of work** — `music`, `sound_recording`, `motion_picture`, `computer_file`, `text`,
  `visual_material`, `serial`, and more.
- **Name contains** — tighten a broad title search to a specific owner.
- **Year from / to** — filter by the record's date.
- **Sort by** — relevance, newest first, oldest first, or title A–Z.

### Fields returned

Titles (primary and alternate), copyright / registration / recordation number, registration
class and type of work, status, **authors**, **claimants (owners)**, **publishers**, and for
recordations the **document type** and **first / second parties** (assignor and assignee),
number of titles and pages, and execution date. Plus registration, publication, creation and
recordation dates, larger-work context, catalog notes, service request and control numbers,
and a direct link to the official public record.

### Example uses

- **Rights clearance & licensing** — find who owns the copyright in a work before you license,
  sample or adapt it, and reach the right claimant.
- **IP due diligence & M\&A** — trace chain of title through recorded assignments, mergers and
  security interests when a catalog changes hands.
- **Music, film & publishing intelligence** — monitor newly registered works and recorded
  deals by studio, label or publisher.
- **Brand & anti-piracy** — build an evidence trail of registrations for enforcement.
- **Lead generation** — surface active claimants, publishers and production companies as sales
  targets.

### Billing

Pay per result. You are charged only for records the actor delivers; failed runs and records
filtered out by your options are never charged. Free Apify plans return up to 10 records per
run.

### Notes

- Data is the public record of the U.S. Copyright Office (registrations from 1978 onward plus
  earlier recorded documents and card-catalog entries).
- Very broad searches are capped at the first 20,000 matches; narrow with a name, title or the
  filters above for complete coverage of a slice.

# Actor input Schema

## `maxRecords` (type: `integer`):

Maximum number of copyright records to collect. The catalog holds 8M+ registrations and recordations, so narrow broad searches with the filters below.

## `names` (type: `array`):

One or more names to search for — a copyright claimant (owner), author, publisher, or an assignment party. Each entry runs as its own phrase search, for example "Netflix", "Sony Music" or "Taylor Swift". Results are merged and de-duplicated.

## `titles` (type: `array`):

One or more work titles to search for, for example "Stranger Things" or "The Great Gatsby". Each entry runs as its own phrase search.

## `copyrightNumbers` (type: `array`):

Look up specific records by number, for example PA0001208965 (registration) or V15046D767 (recordation).

## `searchTerms` (type: `array`):

Raw search expressions passed straight to the catalog engine. Supports quoted phrases, boolean operators and wildcards, for example: "walt disney" AND pixar, or micro\*. Each entry runs as its own search.

## `keyword` (type: `string`):

A single free-text keyword or phrase matched across the whole record (title, names, notes).

## `recordType` (type: `string`):

Registrations are copyright ownership claims. Recordations are recorded documents — assignments, transfers, security interests and mergers (chain of title).

## `registrationClasses` (type: `array`):

Restrict to copyright classes: TX (literary / software), PA (performing arts — music, film, drama), VA (visual arts), SR (sound recordings), SE (serials), PR (preregistration), RE (renewals). Leave empty for all classes.

## `typesOfWork` (type: `array`):

Restrict to work types such as music, sound_recording, motion_picture, computer_file, text, visual_material, serial. Leave empty for all types.

## `nameContains` (type: `string`):

Keep only records where an author, claimant, publisher or party name contains this text. Useful to tighten a broad title search to a specific owner.

## `yearFrom` (type: `integer`):

Only keep records dated in this year or later (based on the record's representative date).

## `yearTo` (type: `integer`):

Only keep records dated in this year or earlier.

## `sortBy` (type: `string`):

Order of results. Relevance is best for name and title searches; Newest first is best for monitoring recent registrations and recordations.

## Actor input object example

```json
{
  "maxRecords": 10,
  "names": [
    "Netflix"
  ],
  "recordType": "all",
  "sortBy": "relevance"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxRecords": 10,
    "names": [
        "Netflix"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/us-copyright-records-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "maxRecords": 10,
    "names": ["Netflix"],
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/us-copyright-records-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxRecords": 10,
  "names": [
    "Netflix"
  ]
}' |
apify call scrapers_lat/us-copyright-records-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapers_lat/us-copyright-records-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/vYVhEuautoxsia40R/builds/sjMnQFQhKUslBArpd/openapi.json
