QuickCompany APIquickcompany.in ↗
Search and retrieve Indian trademark data from QuickCompany.in. Filter by status, Nice class, and keyword. Access details, journals, and correspondence history.
What is the QuickCompany API?
The QuickCompany.in API provides access to Indian trademark registration data across 5 endpoints, covering search, full application details, objected marks, Nice Classification classes, and trademark journals. The search_trademarks endpoint lets you query by keyword, filter by status (Registered, Objected, Abandoned, Refused, Removed, Formal), and narrow results to any of the 45 Nice Classification classes, returning application IDs, proprietor names, and status at scale.
curl -X GET 'https://api.parse.bot/scraper/057beba8-9f8d-49e7-b96c-c461671f62d1/search_trademarks?page=1&order=newest&query=tech&status=Registered&classes=9' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace quickcompany-in-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: QuickCompany Trademark API — search, detail, classify, monitor."""
from parse_apis.quickcompany_trademark_api import QuickCompany, Status, Order, TrademarkNotFound
client = QuickCompany()
# Search for registered trademarks in class 9 (electronics/software)
for tm in client.trademarks.search(query="tech", status=Status.REGISTERED, classes="9", limit=5):
print(tm.name, tm.class_number, tm.proprietor)
# Drill into the first result's full detail
tm = client.trademarks.search(query="tech", order=Order.NEWEST, limit=1).first()
if tm:
detail = tm.detail()
print(detail.name, detail.status, detail.date_of_application)
print(detail.description)
for doc in detail.documents[:3]:
print(doc.document_type, doc.date)
# List trademark classification categories
for cls in client.trademarkclasses.list(limit=5):
print(cls.name, cls.url)
# Check recent trademark journals
for journal in client.journals.list(limit=3):
print(journal.name, journal.published_date, journal.brand_count)
# Handle a missing trademark gracefully
try:
bad = client.trademarks.search(query="nonexistent_xyz_99999", limit=1).first()
if bad:
bad.detail()
except TrademarkNotFound as exc:
print(f"Trademark not found: {exc.application_id}")
print("exercised: trademarks.search / tm.detail / trademarkclasses.list / journals.list")
Search for trademarks by keyword, status, and class. Returns paginated results with trademark summaries including application IDs, names, statuses, and proprietor information. Default query is 'a' when omitted.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| order | string | Sort order for results. |
| query | string | Search keyword to find trademarks by name. |
| status | string | Filter by trademark status. |
| classes | string | Filter by Nice Classification class number (1 through 45). |
{
"type": "object",
"fields": {
"items": "array of trademark summaries with application_id, name, slug, status, class, application_date, proprietor, and url",
"query": "string, the search query used",
"current_page": "integer, page number of results",
"total_matches": "integer or null if not available on page"
},
"sample": {
"data": {
"items": [
{
"url": "https://www.quickcompany.in/trademarks/2679744-tech-ed",
"name": "Tech Ed",
"slug": "tech-ed",
"class": "9",
"status": "Registered",
"proprietor": "Teched Equipment Company",
"application_id": "2679744",
"application_date": "15 Feb 2014"
}
],
"query": "tech",
"current_page": 1,
"total_matches": null
},
"status": "success"
}
}About the QuickCompany API
Trademark Search and Detail
The search_trademarks endpoint accepts a query string alongside optional filters for status and classes (Nice Classification numbers 1–45). Results are paginated via the page parameter and can be sorted by newest. Each result includes application_id, name, slug, status, class, application_date, proprietor, and a direct url. The total_matches field indicates how many records match the query when that figure is available.
The get_trademark_detail endpoint takes an application_id and slug — both available from search results — and returns the full record for a single trademark. Response fields include status, classes, description (the goods/services text), proprietor, date_of_application, a documents array with document types and dates, and a correspondence array with type, ID, and date entries. This makes it possible to trace the procedural history of an application.
Objected Marks and Classification
The get_objected_trademarks_class35_2024 endpoint returns objected trademark cases filtered to a specific Nice Classification class and application year, returning name, application_id, status, and the source url. The limit parameter controls result count. This is useful for monitoring opposition activity within a given class.
The get_trademark_classes endpoint lists all 45 Nice Classification classes with their names and page URLs, providing a reference for populating classes filters in other endpoints. The list_trademark_journals endpoint returns recent trademark journals including journal_number, name, published_date, and brand_count — useful for tracking newly published marks by publication cycle.
The QuickCompany API is a managed, monitored endpoint for quickcompany.in — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when quickcompany.in changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official quickcompany.in API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor competitor trademark filings by searching for brand keywords and filtering to 'Registered' or 'Objected' status.
- Track the procedural history of an application using the
correspondenceanddocumentsarrays fromget_trademark_detail. - Identify objected marks in a specific Nice Classification class to assess opposition trends before filing.
- Build a trademark watch service that alerts on new registrations in a given class by polling
search_trademarkssorted by newest. - Enumerate all 45 Nice Classification classes programmatically using
get_trademark_classesto power classification dropdowns in legal tools. - Retrieve brand counts and publication dates from
list_trademark_journalsto track the volume of new publications per journal cycle. - Verify proprietor details and goods/services descriptions for due diligence on Indian trademark ownership.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does QuickCompany.in offer an official developer API?+
What does `get_trademark_detail` return beyond basic status information?+
description (the goods/services text tied to the mark), date_of_application, a documents array listing document types and dates, and a correspondence array with type, ID, and date for each correspondence event. Combined, these fields let you reconstruct the procedural timeline of an application.Does `total_matches` always return a number in search results?+
total_matches field is typed as integer or null. For certain queries or pages, the source does not expose an aggregate count, so the field returns null. The current_page field is always present for pagination tracking.Can I retrieve trademark data for jurisdictions outside India?+
Is there an endpoint for searching trademark journals by class or date range?+
list_trademark_journals returns journal name, number, published date, and brand count but does not support filtering by class or date range. You can fork the API on Parse and revise it to add a filtered journal search endpoint.