What it does
If you sell print-on-demand T-shirts, mugs or stickers, using a slogan someone else has registered is a risk you want to catch before upload. Checking phrases one at a time in USPTO Trademark Search works, but not when you have a few hundred designs in the queue.
This actor checks each phrase against the official US trademark register (the same database behind USPTO Trademark Search) and returns one row per phrase with a clear verdict: registered-live, pending, dead-only or clear, plus live, registered, pending and dead match counts. Each row lists the matching marks with word mark, serial and registration number, status, filing and registration dates, owner name with state and country, attorney, international classes, goods and services, mark type and a direct TSDR link. Choose exact, contains or words matching and narrow by Nice class, for example 25 for clothing or 21 for mugs.
It is built for Merch by Amazon, Etsy and Redbubble sellers, brand namers and agencies screening many phrases at once. It is not legal advice. A clear result only means no matching mark text was on the USPTO register at check time; it does not cover common-law use, state or foreign registrations, design-only marks or similar-but-not-identical marks. Talk to a trademark attorney before relying on a result. The actor is not affiliated with the USPTO.
How it works
- You paste phrases (case and extra spaces do not matter, duplicates are removed) and choose a match mode and optional international classes.
- Each phrase is searched against the public backend of USPTO Trademark Search (tmsearch.uspto.gov) at no more than 2 requests per second, with back-off on rate limits.
- All matching marks are counted by status to produce the verdict; the class filter, if set, applies to the verdict as well.
- Up to maxResultsPerPhrase marks are listed per phrase (live first, then registered, newest first), filtered by statusFilter.
- Invalid phrases, duplicates and failed checks are never charged, and the run stops cleanly at your spend limit.
Input example
A typical run input (JSON). Every field is also available as a form in the Apify console.
{
"phrases": [
"Just Do It",
"Mama Bear",
"Coffee Before Talkie"
],
"searchMode": "contains",
"statusFilter": "live",
"classes": [
"25",
"21"
],
"maxResultsPerPhrase": 20
}All input fields
| Field | Type | Required | Default | What it does |
|---|---|---|---|---|
phrases | array | yes | Phrases, slogans or brand names to check against the US trademark register (case and extra spaces do not matter; duplicates are removed). Up to 10,000 per run. | |
searchMode | string | no | "exact" | exact = the mark text is exactly the phrase (a trailing . or ! is ignored); contains = the phrase appears anywhere inside a mark (CAT LOVER also finds CRAZY CAT LOVERS); words = every word of the phrase appears in the… |
statusFilter | string | no | "live" | Which matching marks to list in matches. live = registered or pending marks only (the ones that can block you); all = live and dead; dead = abandoned, cancelled or expired only. The verdict and counts always cover… |
classes | array | no | [] | Only consider marks in these Nice international classes, e.g. 25 (clothing), 21 (mugs, housewares), 16 (paper goods, stickers, posters), 18 (bags), 9 (phone cases, software). Leave empty to search all classes. |
maxResultsPerPhrase | integer | no | 20 | How many matching marks to list per phrase (live first, then registered marks, newest first). 0 = verdict and counts only. Does not change the price. |
Output example
One row per phrase, with the verdict and match counts up front:
| phrase | verdict | liveMatchCount | registeredLiveCount | pendingCount | deadMatchCount | matches[0].owner | matches[0].internationalClasses |
|---|---|---|---|---|---|---|---|
| JUST DO IT | registered-live | 12 | 7 | 5 | 9 | Nike, Inc. | 009, 010, 021, 025 |
| MAMA BEAR | registered-live | 8 | 8 | 0 | 26 | Build-A-Bear Retail Management, Inc. | 028 |
| WEBVAN | dead-only | 0 | 0 | 0 | 13 | ||
| COFFEE BEFORE TALKIE | clear | 0 | 0 | 0 | 0 |
Pricing
Pay per event: you are charged only for the results you receive, with no subscription. Set a maximum total charge on any run and it stops cleanly at the cap.
| Charged for | When | Price | Per 1,000 | Worked example |
|---|---|---|---|---|
| Phrase checked | Charged per phrase checked against the register and delivered (verdict, counts and up to 100 matching marks included) | $0.03 | $30 | 1,000 phrases = $30.00 |
| Actor Start (platform start fee) | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). | $0.00005 | — | One run at up to 1 GB = $0.00005 (charged as one event) |
Prices are read from the live Apify Store listing when this page is built. The listing is always authoritative.
Try USPTO Trademark Search on Apify. Pay only for the results you get.
Run on Apify →Use cases
Screening print-on-demand designs
Before uploading a batch of T-shirt or mug designs, run all the slogans with classes 25 and 21 and set aside anything that comes back registered-live or pending. The TSDR link lets you open the official case file for anything borderline.
Naming a product or brand
Check a shortlist of candidate names in contains mode, which is the most cautious, to see which ones already appear inside live marks and who owns them.
Auditing an existing catalog
Export the titles or slogans from your shop and check them in bulk to find listings that may clash with a registered mark.
Agency or marketplace screening
Screen thousands of phrases for clients or sellers at once, about 7,000 phrases per hour, with owners and classes in the output for a quick human review.
How it compares
| ActorForge USPTO Trademark Search | USPTO Trademark Search website | Trademark attorney clearance search | |
|---|---|---|---|
| Data | Official US register | Official US register | US register plus wider sources |
| Bulk phrases in one go | Yes, up to 10,000 per run | No, one search at a time | Usually per mark |
| Verdict per phrase | Yes | No, you read the results | Yes, with a professional opinion |
| Common-law, state and foreign marks | No | No | Yes |
| Similar-sounding or design marks | No | Partial, with manual searching | Yes |
| Legal advice | No | No | Yes |
| Cost | $0.03 per phrase | Free | Professional fees |
For a single important brand name, a trademark attorney's clearance search is the right call, and the free USPTO website is fine for occasional checks. This actor is a fast first-pass filter for large lists of phrases, not a substitute for legal advice.
Limits and honest notes
- Not legal advice. A
clearverdict means no matching mark text was found on the USPTO register at check time. It does not cover common-law (unregistered) use, state or foreign registrations, design-only marks or confusingly similar marks (e.g. different spelling). Consult a trademark attorney before relying on it. - Match modes:
exact= the whole mark text equals the phrase (case-insensitive, a trailing . or ! is ignored);contains= the phrase appears anywhere inside the mark text, also inside longer words (CAT LOVER finds CRAZY CAT LOVERS);words= every word of the phrase appears in the mark, any order, with very common words such as IT or THE ignored by the USPTO index. When unsure, runcontains, which is the most cautious. - The verdict and the live/registered/pending/dead counts always cover every status;
statusFilteronly changes which marks are listed inmatches.pending= live application not (yet) registered; it can still block you. - The international class filter applies to the verdict too: with classes 25 and 21 a phrase registered only for software (class 9) comes back
clearfor your products. - Privacy: only the owner's name, entity type and state/country are returned (as published on the public register). Owner street addresses, emails and phone numbers are never returned; for attorneys only the name.
- Gentle on USPTO: at most 2 requests per second with back-off on rate limits, so about 7,000 phrases per hour. For lists over ~6,000 phrases raise the run timeout above the default 1 hour.
- Data comes from the public backend of USPTO Trademark Search (tmsearch.uspto.gov) and is as fresh as that service, usually updated daily. US government data is in the public domain.
- Respects your run budget: set a maximum total charge and the run checks only as many phrases as it covers, stopping cleanly with every delivered row charged exactly once.
FAQ
How do I check if a phrase is trademarked in the US?
Add the phrase to phrases and run. The verdict tells you whether a live registered mark exists (registered-live), a live application is pending, only dead marks exist (dead-only) or nothing matches (clear), based on the USPTO register at the moment of the check.
Does a 'clear' result mean I can use the phrase?
No. Clear means no matching mark text was found on the USPTO register. It does not cover unregistered common-law rights, state or foreign registrations, design-only marks or confusingly similar marks such as different spellings. This is not legal advice; consult a trademark attorney before relying on it.
What is the difference between exact, contains and words matching?
exact matches marks whose whole text equals the phrase (a trailing . or ! is ignored). contains finds the phrase anywhere inside a mark, so CAT LOVER also finds CRAZY CAT LOVERS. words requires every word to appear in any order. When unsure, use contains, which is the most cautious.
Which trademark classes should I use for T-shirts and mugs?
Class 25 covers clothing and class 21 covers mugs and housewares; 16 is paper goods, stickers and posters, 18 bags and 9 phone cases and software. The class filter also changes the verdict, so a phrase registered only in class 9 comes back clear for classes 25 and 21.
Can a pending application still block me?
Yes. Pending means a live application is in examination and not yet registered, and it can still block you. The verdict and counts always cover every status, whatever you choose in statusFilter.
How much does it cost to check 1,000 phrases?
$30.00, at $0.03 per phrase checked, with the verdict, counts and up to 100 matching marks included. maxResultsPerPhrase does not change the price, and invalid phrases, duplicates and failed checks are free.
Use it from code
Run the actor through the Apify API with the input above.
cURL
curl -X POST "https://api.apify.com/v2/acts/actor-forge~uspto-trademark-search/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"phrases": ["Just Do It", "Mama Bear", "Coffee Before Talkie"], "searchMode": "contains", "statusFilter": "live", "classes": ["25", "21"], "maxResultsPerPhrase": 20}'JavaScript (Node.js)
// Node.js 18+ (built-in fetch). Set APIFY_TOKEN in your environment.
const input = {
"phrases": [
"Just Do It",
"Mama Bear",
"Coffee Before Talkie"
],
"searchMode": "contains",
"statusFilter": "live",
"classes": [
"25",
"21"
],
"maxResultsPerPhrase": 20
};
const res = await fetch(
"https://api.apify.com/v2/acts/actor-forge~uspto-trademark-search/run-sync-get-dataset-items",
{
method: "POST",
headers: {
Authorization: `Bearer ${process.env.APIFY_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify(input),
}
);
const items = await res.json();
console.log(items.length, items[0]);Python
# pip install apify-client (set APIFY_TOKEN in your environment)
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run_input = {
"phrases": [
"Just Do It",
"Mama Bear",
"Coffee Before Talkie"
],
"searchMode": "contains",
"statusFilter": "live",
"classes": [
"25",
"21"
],
"maxResultsPerPhrase": 20
}
run = client.actor("actor-forge/uspto-trademark-search").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)The run-sync-get-dataset-items endpoint waits for the run (up to 5 minutes) and returns the dataset rows directly. For longer runs, start the run asynchronously and read the dataset when it finishes, as the Python example does. Replace APIFY_TOKEN with your own token from the Apify console.
Step-by-step guides
How to Check If a Phrase Is Trademarked (USPTO, in Bulk)
Run your phrases through USPTO Trademark Search in contains mode with the classes for your product (25 for clothing, 21 for mugs). Anything marked…
Related actors
Keyword Suggestions — Google, YouTube, Bing Autocomplete
Bulk keyword suggestions from Google, YouTube, Bing and Baidu autocomplete. Expand each seed with a-z, question words or prepositions for long-tail…
$0.30 per 1,000 · seed expandedShopify Store Scraper — Products, Prices, Store Info
Scrape any Shopify store's products from its public products.json: title, vendor, type, tags, price range, compare-at price, stock, variants and…
$0.30 per 1,000 · product resultGoogle Trends Scraper — Trending Now & Interest Over Time
Google Trends scraper and API: Trending Now searches for 125 countries from the official feed (traffic, start time, picture, news articles), plus…
$0.50 per 1,000 · trend resultTry USPTO Trademark Search on Apify. Pay only for the results you get.
Run on Apify →