
官网:UN Comtrade Database[1]
UN Comtrade 数据库(United Nations International Trade Statistics Database)是全球最大且最为广泛应用的国际贸易数据库。每年全球超过 200 多个国家或地区分别以记录国(Reporter)角色向该数据库汇交他们与其他贸易伙伴国家(Partner)的年度(或月度)国际商品(或服务)贸易分类统计数据。汇交过程中,这些数据记录被基于联合国统计司统一标准规范执行分类编码(例如,HS,SITC,BEC)与估值(单位:美元)。

在 data[2] 页面(如上图)可以填入需要下载的信息,即可获取或者下载 CSV 格式的数据。
也可以通过调用 API 批量获取数据API 说明文档[3],构造请求所需主要参数如下:
The UN Comtrade data extraction API:
https://comtrade.un.org/Data/doc/api/
url = 'url="http://comtrade.un.org/api/get?'
maxrec = 50000 # maximum records returned: [1, 100000]
type= C # trade data type
freq = A # data set frequency, Annual or Monthly
px= H1 # classification
ps= now # time period
r = all # reporting area, 156: China
p= all # partner area
rg= 2 # trade regime/trade flow
cc= TOTAL # Classification codes
fmt= csv # output format, json or CSV
uitoken = '' # authorization code
* 安装命令
ssc install comtrade, replace
help comtrade
comtrade list // List and download possible parameters
使用 API 请求数据的命令语法如下:
comtrade [api] , hs(string) class(string) reportercountry(string)
partnercountry(string) maxdata(string) type(string) freq(string)
years(string) traderegime(string) [ imts(string) general options ]
各选项含义如下(文档写的比较清晰,我就直接搬运帮助文档了):
hs(string) sets the px parameter, the product classification scheme. Can be HS,H0, H1, H2,H4,H5, ST, S1, S2, S3, S4, BEC or EB02. See the webpage or Stata for valid parameters.class(string) sets the cc parameter, the detailed product classification code. string can be: TOTAL (Total trade between reporter and partner, no detail breakdown), AG1, AG2, AG3, AG4, AG5, AG6 and ALL (all codes).AG1 - AG6 are detailed codes at a specific digit level. For instance AG6 in HS gives all of the 6-digit codes, which are the most detailed codes that are internationally comparable. Not all classifications have all digit levels available. See the classification specific codes for more information.reportercountry(string) sets the r parameter, the reporter country. See list of valid reporters in web or in Stata.partnercountry(string) sets the p parameter, the partner country. See list of valid partners web or in Statatype(string) sets the type parameter, the trade data type. Values can be C for commodities and S for services.freq(string) sets the freq parameter, the frequency. Valid values are A for annual and M for monthly.traderegime(string) sets the rg parameter, the trade regime. Valid values are all for imports and exports, 1 for imports and 2 for exports. See valid parameters in web or Stata.years(string) sets the ps parameter, the time period. Format can be YYYY, YYYYMM, now or recent.imts(string) data fields/columns based on IMTS Concepts & Definitions. Can be 2010 for data complying with IMTS 2010 or orig for earlier versions. Is optional.maxdata(string) sets the max parameter, maximum number of records to be returned.可以输入 comtrade list 获取相应参数可填写的内容:

需求:比如要获取以中国为报告国, 2020 年,向全球所有国家 Live animals 的出口数据。
解析上面的需求,可以提取出 API 关键的参数:
r = 156 # Reporters,China: 156
freq = A # Annual
ps = 2019 # Periods (year)
p = all # Partners
cc = "01" # commodity codes
rg = 1 # Trade flows, 1:Import, 2: Export
因此,对应 Stata 的写法如下:
comtrade api, maxdata(500) type(C) freq(A) hs(HS) ///
years(2019) reporterc(156) partnerc(all) traderegime(1) ///
cl(01)
运行上段命令之后,就可以获取需求的数据:
obs: 65
vars: 43 8 Apr 2021 21:43
----------------------------------------------------------------------------------------------------------------------
storage display value
variable name type format label variable label
----------------------------------------------------------------------------------------------------------------------
AltQuantity byte %10.0g AltQuantity v_
CIFValue byte %10.0g CIFValue v_
FOBValue byte %10.0g FOBValue v_
GrossWeight byte %10.0g GrossWeight v_
IsLeaf byte %10.0g IsLeaf v_
NetWeight byte %10.0g NetWeight v_
TradeQuantity byte %10.0g TradeQuantity v_
TradeValue long %10.0g TradeValue v_
aggrLevel str64 %64s aggrLevel v_
cmdCode byte %10.0g cmdCode v_
cmdDescE str64 %64s cmdDescE v_
cstCode byte %10.0g cstCode v_
cstDesc str64 %64s cstDesc v_
estCode byte %10.0g estCode v_
motCode byte %10.0g motCode v_
motDesc str64 %64s motDesc v_
period int %10.0g period v_
periodDesc str64 %64s periodDesc v_
pfCode str64 %64s pfCode v_
pt3ISO str64 %64s pt3ISO v_
pt3ISO2 str64 %64s pt3ISO2 v_
ptCode int %10.0g ptCode v_
ptCode2 byte %10.0g ptCode2 v_
ptTitle str64 %64s ptTitle v_
ptTitle2 str64 %64s ptTitle2 v_
qtAltCode byte %10.0g qtAltCode v_
qtAltDesc str64 %64s qtAltDesc v_
qtCode byte %10.0g qtCode v_
qtDesc str64 %64s qtDesc v_
rgCode byte %10.0g rgCode v_
rgDesc str64 %64s rgDesc v_
rt3ISO str64 %64s rt3ISO v_
rtCode int %10.0g rtCode v_
rtTitle str64 %64s rtTitle v_
_TotalRecords str21 %21s TotalRecords value
_freq str21 %21s freq value
_isOriginal str21 %21s isOriginal value
_isPartnerDet~l str21 %21s isPartnerDetail value
_publicationD~e str21 %21s publicationDate value
_px str21 %21s px value
_rDesc str21 %21s rDesc value
_type str21 %21s type value
_DownloadDate str20 %20s
----------------------------------------------------------------------------------------------------------------------
Sorted by:
有了前面的基础,批量获取无非是通过循环请求了,不做过多的讲解,以一个示例说明,如果要下载其他年份的数据更改选项中的参数即可。
需求:下载以中国为报告国,2017 ~ 2019 年间 02, 03, 04 产品向全球的进口数据。
/*******************************************
year: 2017~2019
reporter: China (156)
partner: all
commodities: 02 03 04
tradeflow: Import
*******************************************/
* comtrade list // List and download possible parameters
global rep "156" //China
global p "all"
*Import
local rg "1"
local cc "02 03 04"
forvalues y = 2017/2019{
foreach c of local cc{
comtrade api, maxdata(500) type(C) freq(A) hs(HS) ///
years(`y') reporterc($rep) partnerc($p) traderegime(`rg') ///
cl(`c') save("`c(pwd)'/comtrade_Import_`y'`rg'`c'$rep.dta")
}
}
[1]
UN Comtrade Database: https://comtrade.un.org/data/
[2]
data: https://comtrade.un.org/data/
[3]
API 说明文档: https://comtrade.un.org/Data/doc/api/