
Congress Stock Trades Scraper
scrape.ly/store/querystone/congress-trades-scraperNewsBusiness
3 monthly users

Search the US trademark register (USPTO) by word mark (exact or contains), owner, goods/services, serial or registration number. Filter by class, status and filing or registration dates. Get status, dates, owner and address, attorney, goods and services by class, design codes and the mark image.
Search the public US trademark register (USPTO data) in bulk: check whether a word or phrase is already a live trademark, list every mark an owner holds, or fetch records by serial or registration number. Each result gives you the status, the key dates, the current owner and address, the attorney, goods and services by class, design codes and the mark image. No login and no API key needed, and a batch of searches finishes in seconds. This is an independent tool and is not affiliated with or endorsed by the USPTO.
JUST DO IT. and Just-Do-It both match just do it. Contains finds the phrase anywhere in a mark.| Field | Description |
|---|---|
terms | Word marks or phrases to look up |
ownerNames | Owner or registrant names (all their marks) |
serialNumbers / registrationNumbers | Direct record lookups (filters are not applied) |
goodsAndServicesKeywords | Phrases searched in the goods/services text |
maxResultsPerSearch | Limit per search (default 20, 0 = no limit) |
matchMode | exact (default), contains or broad |
status | live (default: registered and pending), all, registered, pending, dead |
classes | Comma-separated Nice classes, for example 25,9,18 |
filedFrom / filedTo, registeredFrom / registeredTo | Date ranges (YYYY-MM-DD, YYYY-MM or YYYY) |
sortBy | relevance, newest, oldest, wordmark |
{
"terms": ["star wars", "just do it"],
"classes": "25,9",
"status": "live",
"maxResultsPerSearch": 50
}
Owner portfolio, newest filings first:
{
"ownerNames": ["Example Brands Inc"],
"status": "all",
"filedFrom": "2024-01-01",
"sortBy": "newest",
"maxResultsPerSearch": 0
}
One row per trademark and search. The main fields:
| Field | Description |
|---|---|
wordmark | The word mark (null for design-only marks) |
serialNumber, registrationNumber | USPTO numbers |
status | LIVE (registered), PENDING (live application) or DEAD |
statusCode, statusDescription | The USPTO status code and its text |
filingDate, registrationDate, publishedForOppositionDate, abandonedDate, cancelledDate, renewalDate | Key dates |
internationalClasses, cancelledClasses, usClasses | Classes |
goodsAndServices | [{classNumber, description, cancelled}] |
ownerName, ownerAddress, ownerEntityType, ownerCitizenship, ownerDba | The current owner (the last listed owner) |
owners | Every owner entry (registrant, assignees) |
attorney | Attorney of record |
markType, register, drawingType, designCodes, markDescription, disclaimer, translation | Mark details |
filingBasis, affidavits, proceedings, assignmentRecorded | Prosecution and maintenance facts |
imageUrl, tsdrUrl, assignmentsUrl | Links to the mark image, the TSDR status page and the assignment records |
searchType, searchTerm | Which input found the record |
Example (fictional data, same shape as a real result):
{
"searchType": "wordmark",
"searchTerm": "sunny trail",
"wordmark": "SUNNY TRAIL",
"serialNumber": "97123456",
"registrationNumber": "7012345",
"status": "LIVE",
"statusCode": 700,
"statusDescription": "REGISTERED",
"filingDate": "2022-03-14",
"registrationDate": "2023-08-29",
"publishedForOppositionDate": "2023-06-13",
"abandonedDate": null,
"cancelledDate": null,
"renewalDate": null,
"firstUseDate": "2021-11-01",
"firstUseInCommerceDate": "2021-11-01",
"internationalClasses": ["025"],
"cancelledClasses": [],
"usClasses": ["022", "039"],
"goodsAndServices": [
{"classNumber": "025", "description": "Clothing, namely, shirts, hats and hooded sweatshirts.", "cancelled": false}
],
"ownerName": "Sunny Trail Outfitters LLC",
"ownerAddress": "100 Example Way, Denver, COLORADO 80202, UNITED STATES",
"ownerEntityType": "LIMITED LIABILITY COMPANY",
"ownerCitizenship": "COLORADO, USA",
"ownerDba": null,
"ownerRole": "REGISTRANT",
"owners": [
{"role": "REGISTRANT", "name": "Sunny Trail Outfitters LLC", "entityType": "LIMITED LIABILITY COMPANY", "citizenship": "COLORADO, USA", "dba": null, "address": "100 Example Way, Denver, COLORADO 80202, UNITED STATES"}
],
"attorney": "Alex Example",
"markType": "TRADEMARK",
"register": "PRINCIPAL",
"drawingType": "STANDARD CHARACTER MARK",
"standardCharacterClaim": true,
"designCodes": [],
"markDescription": null,
"disclaimer": null,
"translation": null,
"transliteration": null,
"filingBasis": ["1A"],
"affidavits": [],
"proceedings": [],
"assignmentRecorded": false,
"internationalRegistration": null,
"imageUrl": "https://tmcms-docs.uspto.gov/cases/97123456/mark/large.png",
"tsdrUrl": "https://tsdr.uspto.gov/#caseNumber=97123456&caseSearchType=US_APPLICATION&caseType=DEFAULT&searchType=statusSearch",
"assignmentsUrl": "https://assignmentcenter.uspto.gov/search/trademark?serialNumber=97123456",
"recordUpdatedAt": "2026-09-09T09:18:44"
}
You pay $0.01 per 1,000 trademarks saved ($0.00001 per result) and a $0.0002 start fee per run, plus the small platform usage of the run (compute and proxy traffic). Worked examples from our test runs:
A run that finds no match costs only the start fee and the run's tiny usage, so batch many phrases into one run instead of starting one run per phrase.
Is it legal? The trademark register is public data published by the USPTO. The actor reads the same public search service the USPTO website uses. It is an independent tool, not affiliated with, endorsed by or operated by the USPTO. Owner names and addresses are part of the public record of a filing. Use the data responsibly and follow privacy law in your country when you process records filed by individuals.
Do I need a login, an API key or a proxy? No. The default datacenter proxy works well, and no USPTO account or key is required.
What is the difference between exact and contains? Exact returns marks whose whole text equals your phrase, ignoring case and punctuation. Contains also returns longer marks that include the phrase (for example STAR WARS RESISTANCE for star wars). Broad runs the website's default all-fields search, which also searches owners, goods/services and translations.
How many results can I get? As many as the register has. Set maxResultsPerSearch to 0 for every match. Large owner portfolios with tens of thousands of marks are paged automatically.
Why is a field empty? Not every record has every field. Pending applications have no registration number or date, design-only marks have no word mark, and old records often lack an attorney or goods text.
Is this legal advice for trademark clearance? No. Results show what is recorded in the register. A real clearance also looks at similar-sounding marks, state marks and common-law use. Ask a trademark attorney before you file.
Can I schedule it or use the API? Yes. Schedule it to monitor phrases or serial numbers, or call it through the API and read the dataset as JSON or CSV.
tsdrUrl to open it.recordUpdatedAt).Migrating from a batch trademark-check tool? terms and classes take the same values, and each match comes back as one row with richer fields.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
termsarrayOptionalWord marks / phrases
Words or phrases to look up in the US trademark register, one per line (for example star wars, just do it). How they match is set by Match mode below.
ownerNamesarrayOptionalOwner names
Find every trademark filed by or registered to an owner (company or registrant name, for example Lucasfilm or Nike, Inc.).
serialNumbersarrayOptionalSerial numbers
8-digit USPTO application serial numbers to fetch directly (for example 87262196). Filters do not apply to number lookups.
registrationNumbersarrayOptionalRegistration numbers
USPTO registration numbers to fetch directly (for example 5716070). Filters do not apply to number lookups.
goodsAndServicesKeywordsarrayOptionalGoods & services keywords
Find marks whose goods/services description contains this phrase (for example oat milk or mobile game software).
maxResultsPerSearchintegerOptionaldefault 20Max results per search
Maximum trademarks saved for each word mark, owner or keyword search. 0 means no limit (every match).
matchModeenumOptionaldefault "exact"Match mode
Exact: the whole mark equals the phrase, ignoring case and punctuation (JUST DO IT. matches just do it). Contains: the phrase appears anywhere in the mark. Broad: the public search site's default all-fields search (mark, owner, goods/services, description, translation).
statusenumOptionaldefault "live"Status
Live = registered or pending marks (the ones that can block a new filing). Registered = live and registered. Pending = live applications not yet registered. Dead = abandoned, cancelled or expired.
classesstringOptionalInternational classes
Comma-separated Nice classes to restrict the search to, for example 25 (clothing), 9 (electronics, software), 18 (bags). Leave empty for all classes.
filedFromstringOptionalFiled from
Only marks filed on or after this date (YYYY-MM-DD, YYYY-MM or YYYY).
filedTostringOptionalFiled to
Only marks filed on or before this date.
registeredFromstringOptionalRegistered from
Only marks registered on or after this date.
registeredTostringOptionalRegistered to
Only marks registered on or before this date.
sortByenumOptionaldefault "relevance"Sort by
Order of results within each search (matters when a search has more matches than the limit).
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies are the default and work well for the USPTO search service.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| searchType | string | null | wordmark, owner, goodsAndServices, serialNumber or registrationNumber |
| searchTerm | string | null | The input that found this record |
| wordmark | string | null | Word mark (null for design-only marks) |
| serialNumber | string | null | USPTO application serial number |
| registrationNumber | string | null | Registration number (null while pending) |
| status | string | null | LIVE (registered), PENDING (live application) or DEAD |
| statusCode | integer | number | null | USPTO status code |
| statusDescription | string | null | USPTO status text |
| filingDate | string | null | Filing date (YYYY-MM-DD) |
| registrationDate | string | null | Registration date |
| publishedForOppositionDate | string | null | Published for opposition |
| abandonedDate | string | null | Abandonment date |
| cancelledDate | string | null | Cancellation date |
| renewalDate | string | null | Renewal date |
| firstUseDate | string | null | Date of first use anywhere |
| firstUseInCommerceDate | string | null | Date of first use in commerce |
| internationalClasses | array | Active Nice classes (e.g. 025) |
| cancelledClasses | array | Classes that were cancelled |
| usClasses | array | US classes |
| goodsAndServices | array | Goods and services by class |
| ownerName | string | null | Current owner name |
| ownerAddress | string | null | Current owner address |
| ownerEntityType | string | null | Owner entity type (CORPORATION, LIMITED LIABILITY COMPANY, ...) |
| ownerCitizenship | string | null | Owner state/country of organization |
| ownerDba | string | null | DBA / AKA name |
| ownerRole | string | null | REGISTRANT, APPLICANT, LAST LISTED OWNER, ... |
| owners | array | Every owner entry on the record |
| attorney | string | null | Attorney of record |
| markType | string | null | TRADEMARK, SERVICE MARK, COLLECTIVE MARK, ... |
| register | string | null | PRINCIPAL or SUPPLEMENTAL |
| drawingType | string | null | Drawing type |
| standardCharacterClaim | boolean | null | Standard character claim |
| designCodes | array | Design search codes |
| markDescription | string | null | Mark description |
| disclaimer | string | null | Disclaimer |
| translation | string | null | Translation |
| transliteration | string | null | Transliteration |
| filingBasis | array | Current filing basis (1A, 1B, 44E, 66A ...) |
| affidavits | array | Section 8/15 affidavits |
| proceedings | array | TTAB proceeding numbers |
| assignmentRecorded | boolean | null | An assignment is recorded |
| internationalRegistration | string | null | International registration number |
| imageUrl | string | null | Mark image |
| tsdrUrl | string | null | TSDR status page |
| assignmentsUrl | string | null | Assignment records |
| recordUpdatedAt | string | null | When USPTO last refreshed this record |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Trademark | One trademark record saved to the dataset. | $0.00001 |
| Actor start | Charged once per run. | $0.0002 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('querystone/uspto-trademark-scraper').call({
"terms": [
"star wars",
"disney",
"just do it"
],
"maxResultsPerSearch": 20,
"matchMode": "exact",
"status": "live",
"sortBy": "relevance",
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run querystone/uspto-trademark-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=querystone/uspto-trademark-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
US trademarks whose mark contains the phrase.
Marks owned by Lucasfilm filed from 2015 to 2018.
Registered marks by goods and services keyword.
Broad match on pending marks in two classes.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.