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.
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
<a href="https://greatapis.com/api/tipo/"><img src="https://greatapis.com/badge/tipo.svg" alt="Scored 90 on greatapis.com"></a>
Auth quickstart
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.
Send the token as the tk query parameter on every call, alongside the required format parameter (json or xml).
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
Name
In
Required
Type
format
query
yes
string
top
query
no
integer
skip
query
no
integer
orderby
query
no
string
tk
query
yes
string
applclass
query
no
integer
publishbdate
query
no
string
applnamec
query
no
string
patentno
query
no
string
noticeno
query
no
string
noticebdate
query
no
string
noticeedate
query
no
string
noticebvolisu
query
no
string
noticeevolisu
query
no
string
publishno
query
no
string
publishedate
query
no
string
publishbvolisu
query
no
string
publishevolisu
query
no
string
applno
query
no
string
applbdate
query
no
string
appledate
query
no
string
patentname
query
no
string
ipcfull
query
no
string
ipcsection
query
no
string
ipcclass
query
no
string
ipcsubclass
query
no
string
ipcmaingroup
query
no
string
ipcgroup
query
no
string
locfull
query
no
string
loclevel1
query
no
string
loclevel2
query
no
string
applnamee
query
no
string
applcountry
query
no
string
inventornamec
query
no
string
inventornamee
query
no
string
inventorcountry
query
no
string
agentnamec
query
no
string
chargeexpirbdate
query
no
string
chargeexpiredate
query
no
string
transferer
query
no
string
transferere
query
no
string
transferee
query
no
string
transfereee
query
no
string
Responses
Status
Description
Schema
200
OK
PatentAlteration
PatentAnnuity1
GET/PatentAnnuity
Parameters
Name
In
Required
Type
format
query
yes
string
top
query
no
integer
skip
query
no
integer
orderby
query
no
string
tk
query
yes
string
applclass
query
no
integer
publishbdate
query
no
string
applnamec
query
no
string
patentno
query
no
string
noticeno
query
no
string
noticebdate
query
no
string
noticeedate
query
no
string
noticebvolisu
query
no
string
noticeevolisu
query
no
string
publishno
query
no
string
publishedate
query
no
string
publishbvolisu
query
no
string
publishevolisu
query
no
string
applno
query
no
string
applbdate
query
no
string
appledate
query
no
string
patentname
query
no
string
ipcfull
query
no
string
ipcsection
query
no
string
ipcclass
query
no
string
ipcsubclass
query
no
string
ipcmaingroup
query
no
string
ipcgroup
query
no
string
locfull
query
no
string
loclevel1
query
no
string
loclevel2
query
no
string
applnamee
query
no
string
applcountry
query
no
string
inventornamec
query
no
string
inventornamee
query
no
string
inventorcountry
query
no
string
agentnamec
query
no
string
chargeexpirbdate
query
no
string
chargeexpiredate
query
no
string
chargeexpiryear
query
no
string
Responses
Status
Description
Schema
200
OK
PatentAnnuity
PatentAppl1
GET/PatentAppl
Parameters
Name
In
Required
Type
format
query
yes
string
top
query
no
integer
skip
query
no
integer
orderby
query
no
string
tk
query
yes
string
applclass
query
yes
integer
applno
query
no
string
applbdate
query
no
string
appledate
query
no
string
ipcfull
query
no
string
ipcsection
query
no
string
ipcclass
query
no
string
ipcsubclass
query
no
string
ipcmaingroup
query
no
string
ipcgroup
query
no
string
locfull
query
no
string
loclevel1
query
no
string
loclevel2
query
no
string
Responses
Status
Description
Schema
200
OK
PatentAppl
PatentChange1
GET/PatentChange
Parameters
Name
In
Required
Type
format
query
yes
string
top
query
no
integer
skip
query
no
integer
orderby
query
no
string
tk
query
yes
string
applclass
query
no
integer
publishbdate
query
no
string
applnamec
query
no
string
patentno
query
no
string
noticeno
query
no
string
noticebdate
query
no
string
noticeedate
query
no
string
noticebvolisu
query
no
string
noticeevolisu
query
no
string
publishno
query
no
string
publishedate
query
no
string
publishbvolisu
query
no
string
publishevolisu
query
no
string
applno
query
no
string
applbdate
query
no
string
appledate
query
no
string
patentname
query
no
string
ipcfull
query
no
string
ipcsection
query
no
string
ipcclass
query
no
string
ipcsubclass
query
no
string
ipcmaingroup
query
no
string
ipcgroup
query
no
string
locfull
query
no
string
loclevel1
query
no
string
loclevel2
query
no
string
applnamee
query
no
string
applcountry
query
no
string
inventornamec
query
no
string
inventornamee
query
no
string
inventorcountry
query
no
string
agentnamec
query
no
string
chargeexpirbdate
query
no
string
chargeexpiredate
query
no
string
newapplno
query
no
string
Responses
Status
Description
Schema
200
OK
PatentChange
PatentDivide1
GET/PatentDivide
Parameters
Name
In
Required
Type
format
query
yes
string
top
query
no
integer
skip
query
no
integer
orderby
query
no
string
tk
query
yes
string
querytype
query
yes
integer
applclass
query
no
integer
patentno
query
no
string
noticeno
query
no
string
noticebdate
query
no
string
noticeedate
query
no
string
noticebvolisu
query
no
string
noticeevolisu
query
no
string
publishno
query
no
string
publishbdate
query
no
string
publishedate
query
no
string
publishbvolisu
query
no
string
publishevolisu
query
no
string
applno
query
no
string
applbdate
query
no
string
appledate
query
no
string
patentname
query
no
string
ipcfull
query
no
string
ipcsection
query
no
string
ipcclass
query
no
string
ipcsubclass
query
no
string
ipcmaingroup
query
no
string
ipcgroup
query
no
string
locfull
query
no
string
loclevel1
query
no
string
loclevel2
query
no
string
applnamec
query
no
string
applnamee
query
no
string
applcountry
query
no
string
inventornamec
query
no
string
inventornamee
query
no
string
inventorcountry
query
no
string
agentnamec
query
no
string
chargeexpirbdate
query
no
string
chargeexpiredate
query
no
string
newapplno
query
no
string
Responses
Status
Description
Schema
200
OK
PatentDivide
PatentPriority1
GET/PatentPriority
Parameters
Name
In
Required
Type
format
query
yes
string
top
query
no
integer
skip
query
no
integer
orderby
query
no
string
tk
query
yes
string
applclass
query
no
integer
publishbdate
query
no
string
applnamec
query
no
string
patentno
query
no
string
noticeno
query
no
string
noticebdate
query
no
string
noticeedate
query
no
string
noticebvolisu
query
no
string
noticeevolisu
query
no
string
publishno
query
no
string
publishedate
query
no
string
publishbvolisu
query
no
string
publishevolisu
query
no
string
applno
query
no
string
applbdate
query
no
string
appledate
query
no
string
patentname
query
no
string
ipcfull
query
no
string
ipcsection
query
no
string
ipcclass
query
no
string
ipcsubclass
query
no
string
ipcmaingroup
query
no
string
ipcgroup
query
no
string
locfull
query
no
string
loclevel1
query
no
string
loclevel2
query
no
string
applnamee
query
no
string
applcountry
query
no
string
inventornamec
query
no
string
inventornamee
query
no
string
inventorcountry
query
no
string
agentnamec
query
no
string
chargeexpirbdate
query
no
string
chargeexpiredate
query
no
string
prioritycountry
query
no
string
priorityapplno
query
no
string
prioritybdate
query
no
string
priorityedate
query
no
string
Responses
Status
Description
Schema
200
OK
PatentPriority
PatentPub1
GET/PatentPub
Parameters
Name
In
Required
Type
format
query
yes
string
top
query
no
integer
skip
query
no
integer
orderby
query
no
string
tk
query
yes
string
noticeno
query
no
string
noticebdate
query
no
string
noticeedate
query
no
string
noticebvolisu
query
no
string
noticeevolisu
query
no
string
applno
query
no
string
applbdate
query
no
string
appledate
query
no
string
patentname
query
no
string
ipcfull
query
no
string
ipcsection
query
no
string
ipcclass
query
no
string
ipcsubclass
query
no
string
ipcmaingroup
query
no
string
ipcgroup
query
no
string
applnamec
query
no
string
applnamee
query
no
string
inventornamec
query
no
string
inventornamee
query
no
string
agentnamec
query
no
string
Responses
Status
Description
Schema
200
OK
PatentPub
PatentRights1
GET/PatentRights
Parameters
Name
In
Required
Type
format
query
yes
string
top
query
no
integer
skip
query
no
integer
orderby
query
no
string
tk
query
yes
string
applclass
query
yes
integer
publishbdate
query
no
string
applnamec
query
no
string
patentno
query
no
string
noticeno
query
no
string
noticebdate
query
no
string
noticeedate
query
no
string
noticebvolisu
query
no
string
noticeevolisu
query
no
string
publishno
query
no
string
publishedate
query
no
string
publishbvolisu
query
no
string
publishevolisu
query
no
string
applno
query
no
string
applbdate
query
no
string
appledate
query
no
string
patentname
query
no
string
ipcfull
query
no
string
ipcsection
query
no
string
ipcclass
query
no
string
ipcsubclass
query
no
string
ipcmaingroup
query
no
string
ipcgroup
query
no
string
locfull
query
no
string
loclevel1
query
no
string
loclevel2
query
no
string
applnamee
query
no
string
applcountry
query
no
string
inventornamec
query
no
string
inventornamee
query
no
string
inventorcountry
query
no
string
agentnamec
query
no
string
chargeexpirbdate
query
no
string
chargeexpiredate
query
no
string
Responses
Status
Description
Schema
200
OK
PatentRights
PatentTwins1
GET/PatentTwins
Parameters
Name
In
Required
Type
format
query
yes
string
top
query
no
integer
skip
query
no
integer
orderby
query
no
string
tk
query
yes
string
applno
query
no
string
applclass
query
yes
integer
twinsapplno
query
no
string
patentno
query
no
string
noticeno
query
no
string
noticebdate
query
no
string
noticeedate
query
no
string
noticebvolisu
query
no
string
noticeevolisu
query
no
string
publishno
query
no
string
publishbdate
query
no
string
publishedate
query
no
string
publishbvolisu
query
no
string
publishevolisu
query
no
string
applbdate
query
no
string
appledate
query
no
string
patentname
query
no
string
ipcfull
query
no
string
ipcsection
query
no
string
ipcclass
query
no
string
ipcsubclass
query
no
string
ipcmaingroup
query
no
string
ipcgroup
query
no
string
applnamec
query
no
string
applnamee
query
no
string
applcountry
query
no
string
inventornamec
query
no
string
inventornamee
query
no
string
inventorcountry
query
no
string
agentnamec
query
no
string
chargeexpirbdate
query
no
string
chargeexpiredate
query
no
string
Responses
Status
Description
Schema
200
OK
PatentTwins
TmarkAppl1
GET/TmarkAppl
Parameters
Name
In
Required
Type
format
query
yes
string
top
query
no
integer
skip
query
no
integer
orderby
query
no
string
tk
query
yes
string
applno
query
no
string
applbdate
query
no
string
appledate
query
no
string
tmarkname
query
no
string
tmarkclass
query
no
string
tmarktype
query
no
integer
tmarkcolor
query
no
integer
goodclasscode
query
no
integer
applnamec
query
no
string
applnamee
query
no
string
applcountry
query
no
string
agentname
query
no
string
Responses
Status
Description
Schema
200
OK
TmarkAppl
TmarkChange1
GET/TmarkChange
Parameters
Name
In
Required
Type
format
query
yes
string
top
query
no
integer
skip
query
no
integer
orderby
query
no
string
tk
query
yes
string
applno
query
no
string
applbdate
query
no
string
appledate
query
no
string
tmarkname
query
no
string
tmarkclass
query
no
string
tmarktype
query
no
integer
tmarkcolor
query
no
integer
goodclasscode
query
no
integer
applnamec
query
no
string
applnamee
query
no
string
applcountry
query
no
string
agentname
query
no
string
examno
query
no
string
regnoticebdate
query
no
string
regnoticeedate
query
no
string
volno
query
no
integer
deadlinebdate
query
no
string
deadlineedate
query
no
string
transfereenamec
query
no
string
transfereenamee
query
no
string
Responses
Status
Description
Schema
200
OK
TmarkChange
TmarkDivide1
GET/TmarkDivide
Parameters
Name
In
Required
Type
format
query
yes
string
top
query
no
integer
skip
query
no
integer
orderby
query
no
string
tk
query
yes
string
tmarkname
query
no
string
examno
query
no
string
origntmarkclass
query
no
string
originexamno
query
no
string
Responses
Status
Description
Schema
200
OK
TmarkDivide
TmarkPics1
GET/TmarkPics
Parameters
Name
In
Required
Type
format
query
yes
string
top
query
no
integer
skip
query
no
integer
orderby
query
no
string
tk
query
yes
string
applno
query
no
string
picsbmoddate
query
no
string
picsemoddate
query
no
string
Responses
Status
Description
Schema
200
OK
TmarkPics
TmarkPriority1
GET/TmarkPriority
Parameters
Name
In
Required
Type
format
query
yes
string
top
query
no
integer
skip
query
no
integer
orderby
query
no
string
tk
query
yes
string
applno
query
no
string
applbdate
query
no
string
appledate
query
no
string
tmarkname
query
no
string
tmarkclass
query
no
string
tmarktype
query
no
integer
tmarkcolor
query
no
integer
goodclasscode
query
no
integer
applnamec
query
no
string
applnamee
query
no
string
applcountry
query
no
string
agentname
query
no
string
examno
query
no
string
regnoticebdate
query
no
string
regnoticeedate
query
no
string
prioritytype
query
no
string
Responses
Status
Description
Schema
200
OK
TmarkPriority
TmarkRights1
GET/TmarkRights
Parameters
Name
In
Required
Type
format
query
yes
string
top
query
no
integer
skip
query
no
integer
orderby
query
no
string
tk
query
yes
string
applno
query
no
string
applbdate
query
no
string
appledate
query
no
string
tmarkname
query
no
string
tmarkclass
query
no
string
tmarktype
query
no
integer
tmarkcolor
query
no
integer
goodclasscode
query
no
integer
applnamec
query
no
string
applnamee
query
no
string
applcountry
query
no
string
agentname
query
no
string
examno
query
no
string
regnoticebdate
query
no
string
regnoticeedate
query
no
string
deadlinebdate
query
no
string
deadlineedate
query
no
string
Responses
Status
Description
Schema
200
OK
TmarkRights
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.