USPTO Patent Assignments Scraper: Owners, Reel/Frame & Patents
Pricing
from $10.20 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
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
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
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
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchBy | enum | no | assigneeName | Which 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. |
searchValues | string[] | 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. |
fetchDetails | boolean | no | true | When 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. |
maxAssignments | integer | no | 50 | Maximum number of assignment records to collect across all searches. Minimum 1, maximum 1000000. |
recordedDateFrom | string | no | (empty) | Only keep assignments recorded on or after this date (YYYY-MM-DD). |
recordedDateTo | string | no | (empty) | Only keep assignments recorded on or before this date (YYYY-MM-DD). |
conveyanceContains | string | no | (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.
| Field | Type | Description |
|---|---|---|
reelNumber | integer | Reel number. |
frameNumber | integer | Frame number. |
reelFrame | string | Reel/Frame identifier (for example 64575/117). |
conveyanceText | string | Conveyance type (assignment, merger, security interest, name change and so on). |
conveyanceCode | integer | Conveyance type code. |
recordedDate | string | Date the assignment was recorded (MM/DD/YYYY). |
mailDate | string | Mail date (MM/DD/YYYY). |
receiptDate | string | Receipt date (MM/DD/YYYY). |
executionDate | string | Assignor execution date (MM/DD/YYYY). |
pageCount | integer | Document page count. |
attorneyDocketNumber | string | Attorney docket number, or null. |
assignorCount | integer | Number of assignors. |
assignorNames | string[] | Assignor (previous owner) names. |
assignorNamesText | string | Assignor names joined into one string. |
assigneeCount | integer | Number of assignees. |
assigneeNames | string[] | All assignee (new owner) names. |
assigneeNamesText | string | All assignee names joined into one string. |
assigneeName | string | Primary assignee name. |
assigneeAddressLine1 | string | Assignee address line 1. |
assigneeAddressLine2 | string | Assignee address line 2, or null. |
assigneeCity | string | Assignee city. |
assigneeState | string | Assignee state. |
assigneeZip | string | Assignee ZIP / postal code. |
assigneeCountry | string | Assignee country. |
propertyCount | integer | Number of assigned properties (patents / applications). |
patentNumbers | string[] | Assigned patent numbers. |
applicationNumbers | string[] | Assigned application numbers. |
publicationNumbers | string[] | Assigned publication numbers. |
topInventionTitle | string | Title of the first assigned property. |
correspondentName | string | Correspondent name. |
imageUrl | string | Recorded document image URL. |
searchBy | string | Field searched. |
searchValue | string | Search value that produced this record. |
source | string | Data source. |
observedAt | string | ISO 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:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "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 (
resultevent). 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
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon 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.
Related scrapers
- US ITC Section 337 Investigations Scraper: US ITC Section 337 patent-import investigations and filings.
- SEC EDGAR Company Filings Scraper: SEC filings by ticker or CIK.
- Federal Register Document Scraper: US Federal Register documents.
- NIH Research Grants & Funding Scraper: NIH research grants and funding.
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.
