Patent — entry 003 of 3

TIPO

Verified Sep 2026

Taiwan's Intellectual Property Office (TIPO) publishes patent gazette, application, priority, annuity, and rights-transfer records through a REST API now hosted at cloud.tipo.gov.tw, after the old tiponet.tipo.gov.tw gazette pages were retired in favor of a unified Patent & Trademark Open Data portal. Every call needs a free verification token issued by TIPO and can return JSON or XML; without a valid token the API still answers with representative sample records rather than an outright error. A live request against the actual query endpoint came back with no CORS header at all, so browser-side cross-origin calls are blocked even though the separate spec-download endpoint does allow them.

TIPO (Taiwan's Intellectual Property Office) publishes patent, trademark, and rights-transfer records through a REST API. Every real query needs a token, but the API does not reject an unauthenticated call outright. A live GET /PatentAppl?format=json this run, sent with no tk at all, returned HTTP 200 and a fixed 25-row sample instead of an error.

patentsgovernmenttaiwanopen-datagazette
AuthenticationAPI KeySign up with the provider to obtain credentials.
HTTPSSupportedTraffic is encrypted in transit.
CORSDisabledBrowser calls need a server-side proxy.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSON, XMLResponses can be requested as JSON or XML.

GreatAPIs Score

Score90out of 100
Authentication15/25API key required
Pricing20/20Free to use
Docs20/20Machine-readable spec file bundled
Formats15/15Supports 2 response formats
Freshness20/20Verified within 6 months

Embed this badge

Scored 90 on greatapis.com
<a href="https://greatapis.com/api/tipo/"><img src="https://greatapis.com/badge/tipo.svg" alt="Scored 90 on greatapis.com"></a>

Auth quickstart

  1. A token is not self-serve. Fill in the application form at https://cloud.tipo.gov.tw/S220/opdata/api/information/file/api-register-form-docx (an -odt version is also live) and email it to ipoid@tipo.gov.tw. The form asks for the applicant's name, contact details, email, intended use, and industry. TIPO emails the token back.
  2. Send the token as the tk query parameter on every call, alongside the required format parameter (json or xml).
  3. Without a valid tk, the API does not error. A live call this run to /PatentAppl?format=json with no tk returned HTTP 200 with "status":"sample" and a fixed set of 25 sample rows. A live retry with a bogus tk and different top/skip values returned the exact same 25 rows, so sample mode ignores those parameters. /PatentRights and /TmarkAppl behave the same way, each with its own fixed sample and its own total-count (931,360 and 3,418,890 in this run's calls).
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Endpoints

Servers
https://cloud.tipo.gov.tw/S220/opdataapi/api
PatentAlteration1
GET/PatentAlteration
Parameters
NameInRequiredType
formatqueryyesstring
topquerynointeger
skipquerynointeger
orderbyquerynostring
tkqueryyesstring
applclassquerynointeger
publishbdatequerynostring
applnamecquerynostring
patentnoquerynostring
noticenoquerynostring
noticebdatequerynostring
noticeedatequerynostring
noticebvolisuquerynostring
noticeevolisuquerynostring
publishnoquerynostring
publishedatequerynostring
publishbvolisuquerynostring
publishevolisuquerynostring
applnoquerynostring
applbdatequerynostring
appledatequerynostring
patentnamequerynostring
ipcfullquerynostring
ipcsectionquerynostring
ipcclassquerynostring
ipcsubclassquerynostring
ipcmaingroupquerynostring
ipcgroupquerynostring
locfullquerynostring
loclevel1querynostring
loclevel2querynostring
applnameequerynostring
applcountryquerynostring
inventornamecquerynostring
inventornameequerynostring
inventorcountryquerynostring
agentnamecquerynostring
chargeexpirbdatequerynostring
chargeexpiredatequerynostring
transfererquerynostring
transfererequerynostring
transfereequerynostring
transfereeequerynostring
Responses
StatusDescriptionSchema
200OKPatentAlteration
PatentAnnuity1
GET/PatentAnnuity
Parameters
NameInRequiredType
formatqueryyesstring
topquerynointeger
skipquerynointeger
orderbyquerynostring
tkqueryyesstring
applclassquerynointeger
publishbdatequerynostring
applnamecquerynostring
patentnoquerynostring
noticenoquerynostring
noticebdatequerynostring
noticeedatequerynostring
noticebvolisuquerynostring
noticeevolisuquerynostring
publishnoquerynostring
publishedatequerynostring
publishbvolisuquerynostring
publishevolisuquerynostring
applnoquerynostring
applbdatequerynostring
appledatequerynostring
patentnamequerynostring
ipcfullquerynostring
ipcsectionquerynostring
ipcclassquerynostring
ipcsubclassquerynostring
ipcmaingroupquerynostring
ipcgroupquerynostring
locfullquerynostring
loclevel1querynostring
loclevel2querynostring
applnameequerynostring
applcountryquerynostring
inventornamecquerynostring
inventornameequerynostring
inventorcountryquerynostring
agentnamecquerynostring
chargeexpirbdatequerynostring
chargeexpiredatequerynostring
chargeexpiryearquerynostring
Responses
StatusDescriptionSchema
200OKPatentAnnuity
PatentAppl1
GET/PatentAppl
Parameters
NameInRequiredType
formatqueryyesstring
topquerynointeger
skipquerynointeger
orderbyquerynostring
tkqueryyesstring
applclassqueryyesinteger
applnoquerynostring
applbdatequerynostring
appledatequerynostring
ipcfullquerynostring
ipcsectionquerynostring
ipcclassquerynostring
ipcsubclassquerynostring
ipcmaingroupquerynostring
ipcgroupquerynostring
locfullquerynostring
loclevel1querynostring
loclevel2querynostring
Responses
StatusDescriptionSchema
200OKPatentAppl
PatentChange1
GET/PatentChange
Parameters
NameInRequiredType
formatqueryyesstring
topquerynointeger
skipquerynointeger
orderbyquerynostring
tkqueryyesstring
applclassquerynointeger
publishbdatequerynostring
applnamecquerynostring
patentnoquerynostring
noticenoquerynostring
noticebdatequerynostring
noticeedatequerynostring
noticebvolisuquerynostring
noticeevolisuquerynostring
publishnoquerynostring
publishedatequerynostring
publishbvolisuquerynostring
publishevolisuquerynostring
applnoquerynostring
applbdatequerynostring
appledatequerynostring
patentnamequerynostring
ipcfullquerynostring
ipcsectionquerynostring
ipcclassquerynostring
ipcsubclassquerynostring
ipcmaingroupquerynostring
ipcgroupquerynostring
locfullquerynostring
loclevel1querynostring
loclevel2querynostring
applnameequerynostring
applcountryquerynostring
inventornamecquerynostring
inventornameequerynostring
inventorcountryquerynostring
agentnamecquerynostring
chargeexpirbdatequerynostring
chargeexpiredatequerynostring
newapplnoquerynostring
Responses
StatusDescriptionSchema
200OKPatentChange
PatentDivide1
GET/PatentDivide
Parameters
NameInRequiredType
formatqueryyesstring
topquerynointeger
skipquerynointeger
orderbyquerynostring
tkqueryyesstring
querytypequeryyesinteger
applclassquerynointeger
patentnoquerynostring
noticenoquerynostring
noticebdatequerynostring
noticeedatequerynostring
noticebvolisuquerynostring
noticeevolisuquerynostring
publishnoquerynostring
publishbdatequerynostring
publishedatequerynostring
publishbvolisuquerynostring
publishevolisuquerynostring
applnoquerynostring
applbdatequerynostring
appledatequerynostring
patentnamequerynostring
ipcfullquerynostring
ipcsectionquerynostring
ipcclassquerynostring
ipcsubclassquerynostring
ipcmaingroupquerynostring
ipcgroupquerynostring
locfullquerynostring
loclevel1querynostring
loclevel2querynostring
applnamecquerynostring
applnameequerynostring
applcountryquerynostring
inventornamecquerynostring
inventornameequerynostring
inventorcountryquerynostring
agentnamecquerynostring
chargeexpirbdatequerynostring
chargeexpiredatequerynostring
newapplnoquerynostring
Responses
StatusDescriptionSchema
200OKPatentDivide
PatentPriority1
GET/PatentPriority
Parameters
NameInRequiredType
formatqueryyesstring
topquerynointeger
skipquerynointeger
orderbyquerynostring
tkqueryyesstring
applclassquerynointeger
publishbdatequerynostring
applnamecquerynostring
patentnoquerynostring
noticenoquerynostring
noticebdatequerynostring
noticeedatequerynostring
noticebvolisuquerynostring
noticeevolisuquerynostring
publishnoquerynostring
publishedatequerynostring
publishbvolisuquerynostring
publishevolisuquerynostring
applnoquerynostring
applbdatequerynostring
appledatequerynostring
patentnamequerynostring
ipcfullquerynostring
ipcsectionquerynostring
ipcclassquerynostring
ipcsubclassquerynostring
ipcmaingroupquerynostring
ipcgroupquerynostring
locfullquerynostring
loclevel1querynostring
loclevel2querynostring
applnameequerynostring
applcountryquerynostring
inventornamecquerynostring
inventornameequerynostring
inventorcountryquerynostring
agentnamecquerynostring
chargeexpirbdatequerynostring
chargeexpiredatequerynostring
prioritycountryquerynostring
priorityapplnoquerynostring
prioritybdatequerynostring
priorityedatequerynostring
Responses
StatusDescriptionSchema
200OKPatentPriority
PatentPub1
GET/PatentPub
Parameters
NameInRequiredType
formatqueryyesstring
topquerynointeger
skipquerynointeger
orderbyquerynostring
tkqueryyesstring
noticenoquerynostring
noticebdatequerynostring
noticeedatequerynostring
noticebvolisuquerynostring
noticeevolisuquerynostring
applnoquerynostring
applbdatequerynostring
appledatequerynostring
patentnamequerynostring
ipcfullquerynostring
ipcsectionquerynostring
ipcclassquerynostring
ipcsubclassquerynostring
ipcmaingroupquerynostring
ipcgroupquerynostring
applnamecquerynostring
applnameequerynostring
inventornamecquerynostring
inventornameequerynostring
agentnamecquerynostring
Responses
StatusDescriptionSchema
200OKPatentPub
PatentRights1
GET/PatentRights
Parameters
NameInRequiredType
formatqueryyesstring
topquerynointeger
skipquerynointeger
orderbyquerynostring
tkqueryyesstring
applclassqueryyesinteger
publishbdatequerynostring
applnamecquerynostring
patentnoquerynostring
noticenoquerynostring
noticebdatequerynostring
noticeedatequerynostring
noticebvolisuquerynostring
noticeevolisuquerynostring
publishnoquerynostring
publishedatequerynostring
publishbvolisuquerynostring
publishevolisuquerynostring
applnoquerynostring
applbdatequerynostring
appledatequerynostring
patentnamequerynostring
ipcfullquerynostring
ipcsectionquerynostring
ipcclassquerynostring
ipcsubclassquerynostring
ipcmaingroupquerynostring
ipcgroupquerynostring
locfullquerynostring
loclevel1querynostring
loclevel2querynostring
applnameequerynostring
applcountryquerynostring
inventornamecquerynostring
inventornameequerynostring
inventorcountryquerynostring
agentnamecquerynostring
chargeexpirbdatequerynostring
chargeexpiredatequerynostring
Responses
StatusDescriptionSchema
200OKPatentRights
PatentTwins1
GET/PatentTwins
Parameters
NameInRequiredType
formatqueryyesstring
topquerynointeger
skipquerynointeger
orderbyquerynostring
tkqueryyesstring
applnoquerynostring
applclassqueryyesinteger
twinsapplnoquerynostring
patentnoquerynostring
noticenoquerynostring
noticebdatequerynostring
noticeedatequerynostring
noticebvolisuquerynostring
noticeevolisuquerynostring
publishnoquerynostring
publishbdatequerynostring
publishedatequerynostring
publishbvolisuquerynostring
publishevolisuquerynostring
applbdatequerynostring
appledatequerynostring
patentnamequerynostring
ipcfullquerynostring
ipcsectionquerynostring
ipcclassquerynostring
ipcsubclassquerynostring
ipcmaingroupquerynostring
ipcgroupquerynostring
applnamecquerynostring
applnameequerynostring
applcountryquerynostring
inventornamecquerynostring
inventornameequerynostring
inventorcountryquerynostring
agentnamecquerynostring
chargeexpirbdatequerynostring
chargeexpiredatequerynostring
Responses
StatusDescriptionSchema
200OKPatentTwins
TmarkAppl1
GET/TmarkAppl
Parameters
NameInRequiredType
formatqueryyesstring
topquerynointeger
skipquerynointeger
orderbyquerynostring
tkqueryyesstring
applnoquerynostring
applbdatequerynostring
appledatequerynostring
tmarknamequerynostring
tmarkclassquerynostring
tmarktypequerynointeger
tmarkcolorquerynointeger
goodclasscodequerynointeger
applnamecquerynostring
applnameequerynostring
applcountryquerynostring
agentnamequerynostring
Responses
StatusDescriptionSchema
200OKTmarkAppl
TmarkChange1
GET/TmarkChange
Parameters
NameInRequiredType
formatqueryyesstring
topquerynointeger
skipquerynointeger
orderbyquerynostring
tkqueryyesstring
applnoquerynostring
applbdatequerynostring
appledatequerynostring
tmarknamequerynostring
tmarkclassquerynostring
tmarktypequerynointeger
tmarkcolorquerynointeger
goodclasscodequerynointeger
applnamecquerynostring
applnameequerynostring
applcountryquerynostring
agentnamequerynostring
examnoquerynostring
regnoticebdatequerynostring
regnoticeedatequerynostring
volnoquerynointeger
deadlinebdatequerynostring
deadlineedatequerynostring
transfereenamecquerynostring
transfereenameequerynostring
Responses
StatusDescriptionSchema
200OKTmarkChange
TmarkDivide1
GET/TmarkDivide
Parameters
NameInRequiredType
formatqueryyesstring
topquerynointeger
skipquerynointeger
orderbyquerynostring
tkqueryyesstring
tmarknamequerynostring
examnoquerynostring
origntmarkclassquerynostring
originexamnoquerynostring
Responses
StatusDescriptionSchema
200OKTmarkDivide
TmarkPics1
GET/TmarkPics
Parameters
NameInRequiredType
formatqueryyesstring
topquerynointeger
skipquerynointeger
orderbyquerynostring
tkqueryyesstring
applnoquerynostring
picsbmoddatequerynostring
picsemoddatequerynostring
Responses
StatusDescriptionSchema
200OKTmarkPics
TmarkPriority1
GET/TmarkPriority
Parameters
NameInRequiredType
formatqueryyesstring
topquerynointeger
skipquerynointeger
orderbyquerynostring
tkqueryyesstring
applnoquerynostring
applbdatequerynostring
appledatequerynostring
tmarknamequerynostring
tmarkclassquerynostring
tmarktypequerynointeger
tmarkcolorquerynointeger
goodclasscodequerynointeger
applnamecquerynostring
applnameequerynostring
applcountryquerynostring
agentnamequerynostring
examnoquerynostring
regnoticebdatequerynostring
regnoticeedatequerynostring
prioritytypequerynostring
Responses
StatusDescriptionSchema
200OKTmarkPriority
TmarkRights1
GET/TmarkRights
Parameters
NameInRequiredType
formatqueryyesstring
topquerynointeger
skipquerynointeger
orderbyquerynostring
tkqueryyesstring
applnoquerynostring
applbdatequerynostring
appledatequerynostring
tmarknamequerynostring
tmarkclassquerynostring
tmarktypequerynointeger
tmarkcolorquerynointeger
goodclasscodequerynointeger
applnamecquerynostring
applnameequerynostring
applcountryquerynostring
agentnamequerynostring
examnoquerynostring
regnoticebdatequerynostring
regnoticeedatequerynostring
deadlinebdatequerynostring
deadlineedatequerynostring
Responses
StatusDescriptionSchema
200OKTmarkRights

Try it

Developer reference

Base URLhttps://cloud.tipo.gov.tw/S220/opdataapi/api
Key endpoints
  • GET/PatentAppl
  • GET/PatentRights
  • GET/TmarkAppl
  • GET/TmarkRights

Gotchas & limits

  • Sample mode ignores paging and sorting. A live call with top, skip, and a bogus tk set returned the same 25 rows as a call with none of those set, so there is no way to page through the sample data.
  • There is no CORS on the query endpoint. A live plain GET with an Origin header returned no access-control-allow-origin header at all, and an OPTIONS preflight with Access-Control-Request-Method set returned HTTP 403 with the body Invalid CORS request. Route calls through a server, not a browser.
  • Field names mix hyphens and a leading - for values that are XML attributes on the JSON side, for example -sequence, -page-count, and -create-date. Some field values, like appl-country, come back in Chinese.
  • The format query parameter picks JSON or XML (format=json or format=xml). The shape stays the same either way, just serialized differently. A live format=xml call returned HTTP 200 with content-type: application/xml;charset=UTF-8 and the same sample rows as the JSON call.