USPTO Patent Assignments Scraper: Owners, Reel/Frame & Patents avatar

USPTO Patent Assignments Scraper: Owners, Reel/Frame & Patents

Pricing

from $10.20 / 1,000 results

Go to Apify Store
USPTO Patent Assignments Scraper: Owners, Reel/Frame & Patents

USPTO Patent Assignments Scraper: Owners, Reel/Frame & Patents

Scrape USPTO patent assignment (ownership transfer) records: assignors, assignees with company address, conveyance type, execution & recorded dates, reel/frame and assigned patent/application numbers. Search by assignee, assignor, patent, application or reel/frame. Export to JSON, CSV or Excel.

Pricing

from $10.20 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

USPTO Patent Assignments Scraper: Owners, Reel/Frame & Patents

USPTO Patent Assignments Scraper: Owners, Reel/Frame & Patents

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

{
"reelNumber": 64575,
"frameNumber": 117,
"reelFrame": "64575/117",
"conveyanceText": "ASSIGNMENT OF ASSIGNOR'S INTEREST",
"conveyanceCode": 23,
"recordedDate": "08/14/2023",
"mailDate": "08/15/2023",
"receiptDate": "08/14/2023",
"executionDate": "06/26/2023",
"pageCount": 5,
"attorneyDocketNumber": "P202204837US01",
"assignorCount": 5,
"assignorNames": ["SUNG, MIN GYU", "KRISHNAN, RISHIKESH", "STUCKERT, ERIN", "LOUBET, NICOLAS JEAN", "FROUGIER, JULIEN"],
"assignorNamesText": "SUNG, MIN GYU; KRISHNAN, RISHIKESH; STUCKERT, ERIN; LOUBET, NICOLAS JEAN; FROUGIER, JULIEN",
"assigneeCount": 1,
"assigneeNames": ["IBM CORPORATION - PATENT CENTER"],
"assigneeNamesText": "IBM CORPORATION - PATENT CENTER",
"assigneeName": "IBM CORPORATION - PATENT CENTER",
"assigneeAddressLine1": "1701 NORTH STREET",
"assigneeAddressLine2": "B/256-3",
"assigneeCity": "ENDICOTT",
"assigneeState": "NEW YORK",
"assigneeZip": "13760",
"assigneeCountry": "UNITED STATES",
"propertyCount": 1,
"patentNumbers": [],
"applicationNumbers": ["18342821"],
"publicationNumbers": ["US20250006788A1"],
"topInventionTitle": "NANOSHEET HEIGHT CONTROL WITH DENSE OXIDE SHALLOW TRENCH ISOLATION",
"correspondentName": "IBM CORPORATION - PATENT CENTER",
"imageUrl": "https://assignmentcenter.uspto.gov/ipas/search/api/v3/public/download/patent/64575/117",
"searchBy": "assigneeName",
"searchValue": "IBM",
"source": "USPTO Patent Assignment Search",
"observedAt": "2026-08-10T00:33:59.545Z"
}

The most complete USPTO patent assignment scraper available. It returns every field the USPTO assignment record exposes for each ownership transfer, including assignors and assignees, the assignee company address, conveyance type and code, execution / recorded / mail / receipt dates, reel and frame, page count, correspondent, and the assigned patent, application and publication numbers, and gives you seven search fields plus date and conveyance filters to target exactly the assignments you need.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor searches the USPTO Patent Assignment record by the field you choose (assignee, assignor, patent, application, publication, reel/frame, or correspondent), applies the date and conveyance filters, and writes one normalized record per assignment to the run's dataset. Each value in searchValues runs a separate search and results are combined. When fetchDetails is enabled (default), each assignment is enriched with the full assignee company address, correspondent, and the list of assigned patent / application / publication numbers.

Dates are returned in the source MM/DD/YYYY format (for example 08/14/2023), name lists are provided both as arrays and as a single joined string, and missing source values are returned as null or an empty array.

Quickstart

Open the actor, paste this into the input, and press Run. It returns up to 8 assignments recorded to IBM between 2020 and 2023.

{
"searchBy": "assigneeName",
"searchValues": ["IBM"],
"fetchDetails": true,
"maxAssignments": 8,
"recordedDateFrom": "2020-01-01",
"recordedDateTo": "2023-12-31",
"conveyanceContains": "assignment"
}

Change searchBy to search by patent number, reel/frame, and so on. Default maxAssignments is 50.

Input reference

FieldTypeRequiredDefaultDescription
searchByenumnoassigneeNameWhich field the search values are matched against. One of assigneeName (current / new owner), assignorName (previous owner), patentNumber, applicationNumber, publicationNumber, reelFrame (for example 74685/126), correspondentName.
searchValuesstring[]no["IBM"]Values to search for using the chosen field (for example company names like IBM, Google, or patent numbers). Each value runs a separate search and results are combined.
fetchDetailsbooleannotrueWhen enabled, each assignment is enriched with the full assignee company address, correspondent and the list of assigned patent / application numbers. Disable for a faster, summary-only run.
maxAssignmentsintegerno50Maximum number of assignment records to collect across all searches. Minimum 1, maximum 1000000.
recordedDateFromstringno(empty)Only keep assignments recorded on or after this date (YYYY-MM-DD).
recordedDateTostringno(empty)Only keep assignments recorded on or before this date (YYYY-MM-DD).
conveyanceContainsstringno(empty)Only keep assignments whose conveyance text contains this phrase (case-insensitive), for example assignment, merger, security, name change.

Output reference

One dataset item per assignment. Types: string, integer, string[], or null / empty array when the source value is absent.

FieldTypeDescription
reelNumberintegerReel number.
frameNumberintegerFrame number.
reelFramestringReel/Frame identifier (for example 64575/117).
conveyanceTextstringConveyance type (assignment, merger, security interest, name change and so on).
conveyanceCodeintegerConveyance type code.
recordedDatestringDate the assignment was recorded (MM/DD/YYYY).
mailDatestringMail date (MM/DD/YYYY).
receiptDatestringReceipt date (MM/DD/YYYY).
executionDatestringAssignor execution date (MM/DD/YYYY).
pageCountintegerDocument page count.
attorneyDocketNumberstringAttorney docket number, or null.
assignorCountintegerNumber of assignors.
assignorNamesstring[]Assignor (previous owner) names.
assignorNamesTextstringAssignor names joined into one string.
assigneeCountintegerNumber of assignees.
assigneeNamesstring[]All assignee (new owner) names.
assigneeNamesTextstringAll assignee names joined into one string.
assigneeNamestringPrimary assignee name.
assigneeAddressLine1stringAssignee address line 1.
assigneeAddressLine2stringAssignee address line 2, or null.
assigneeCitystringAssignee city.
assigneeStatestringAssignee state.
assigneeZipstringAssignee ZIP / postal code.
assigneeCountrystringAssignee country.
propertyCountintegerNumber of assigned properties (patents / applications).
patentNumbersstring[]Assigned patent numbers.
applicationNumbersstring[]Assigned application numbers.
publicationNumbersstring[]Assigned publication numbers.
topInventionTitlestringTitle of the first assigned property.
correspondentNamestringCorrespondent name.
imageUrlstringRecorded document image URL.
searchBystringField searched.
searchValuestringSearch value that produced this record.
sourcestringData source.
observedAtstringISO 8601 timestamp of when the record was collected.

The address, correspondent and assigned-property fields are populated only when fetchDetails is enabled. On a failed run, the actor writes a single item with a populated error field instead, and does not charge for it.

Example output record

Real record from a live run (input {"searchBy": "assigneeName", "searchValues": ["IBM"], "fetchDetails": true, "maxAssignments": 8, "recordedDateFrom": "2020-01-01", "recordedDateTo": "2023-12-31", "conveyanceContains": "assignment"}):

{
"reelNumber": 64575,
"frameNumber": 117,
"reelFrame": "64575/117",
"conveyanceText": "ASSIGNMENT OF ASSIGNOR'S INTEREST",
"conveyanceCode": 23,
"recordedDate": "08/14/2023",
"mailDate": "08/15/2023",
"receiptDate": "08/14/2023",
"executionDate": "06/26/2023",
"pageCount": 5,
"attorneyDocketNumber": "P202204837US01",
"assignorCount": 5,
"assignorNames": ["SUNG, MIN GYU", "KRISHNAN, RISHIKESH", "STUCKERT, ERIN", "LOUBET, NICOLAS JEAN", "FROUGIER, JULIEN"],
"assignorNamesText": "SUNG, MIN GYU; KRISHNAN, RISHIKESH; STUCKERT, ERIN; LOUBET, NICOLAS JEAN; FROUGIER, JULIEN",
"assigneeCount": 1,
"assigneeNames": ["IBM CORPORATION - PATENT CENTER"],
"assigneeNamesText": "IBM CORPORATION - PATENT CENTER",
"assigneeName": "IBM CORPORATION - PATENT CENTER",
"assigneeAddressLine1": "1701 NORTH STREET",
"assigneeAddressLine2": "B/256-3",
"assigneeCity": "ENDICOTT",
"assigneeState": "NEW YORK",
"assigneeZip": "13760",
"assigneeCountry": "UNITED STATES",
"propertyCount": 1,
"patentNumbers": [],
"applicationNumbers": ["18342821"],
"publicationNumbers": ["US20250006788A1"],
"topInventionTitle": "NANOSHEET HEIGHT CONTROL WITH DENSE OXIDE SHALLOW TRENCH ISOLATION",
"correspondentName": "IBM CORPORATION - PATENT CENTER",
"imageUrl": "https://assignmentcenter.uspto.gov/ipas/search/api/v3/public/download/patent/64575/117",
"searchBy": "assigneeName",
"searchValue": "IBM",
"source": "USPTO Patent Assignment Search",
"observedAt": "2026-08-10T00:33:59.545Z"
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~uspto-patent-assignments-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"searchBy":"assigneeName","searchValues":["IBM"],"maxAssignments":25}'

Start a run asynchronously (search by patent number):

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~uspto-patent-assignments-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"searchBy":"patentNumber","searchValues":["10000000"],"fetchDetails":true,"maxAssignments":50}'

Apify CLI:

apify call scrapers_lat/uspto-patent-assignments-scraper \
--input '{"searchBy":"reelFrame","searchValues":["64575/117"]}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per record returned (result event). See the pricing tab for the current per-result price.
  • No charge on failure. If a run errors, the actor writes a single item with a populated error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 records per run. Upgrade for higher maxAssignments.

FAQ and troubleshooting

A run returned 0 records. Why? The search value matched no assignments in the chosen field, or the date / conveyance filter excluded them all. Confirm the search value and searchBy pairing (for example a patent number needs searchBy: patentNumber), then loosen the filters. Zero-result runs are not charged.

Why are dates formatted as MM/DD/YYYY? That is the exact format the USPTO assignment record publishes. Values are returned verbatim rather than reformatted.

Why is patentNumbers empty when applicationNumbers is not? Many assignments cover applications that have not yet granted, so only application and publication numbers are present. Missing source values are returned as empty arrays or null, never invented.

What does fetchDetails change? With it off, you get the summary assignment record fast. With it on (default), each record is enriched with the assignee address, correspondent, and the full list of assigned patent / application / publication numbers.

Can I search several companies or patents at once? Yes. Pass multiple entries in searchValues; each runs a separate search using the same searchBy field and results are combined up to maxAssignments.

Is this an official USPTO tool? No. This actor is independent and has no affiliation with the USPTO. It reads only data that is publicly available through the USPTO Patent Assignment Search. Use it in accordance with the USPTO's terms of service.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with the USPTO. Accesses only publicly available USPTO Patent Assignment Search data. Use in accordance with the USPTO's terms of service.