求查询空气质量api接口的接口.

错误码参照
价格与请求限制
SDK与常见问题
接口地址:
/air/cityair
支持格式:
请求方式:
请求示例:
请求参数:
城市中文名称,比如:深圳
调用样例及调试工具:
返回字段:
JSON返回示例:
{ "error_code": 0, "reason": "成功", "result": { "Ranking": 83, "CityName": "深圳市", "ProvinceName": "广东省", "AQI": 58, "Quality": "良", "PM25": "36μg/m?", "UpdateTime": " 21:00" } }
系统级错误码参照(error_code):
&错误的请求KEY
&该KEY无请求权限
&错误的SDK KEY
&应用未审核超时,请提交认证
&未知的请求源,(服务器没有获取到IP地址)
&被禁止的IP
&被禁止的KEY
&当前IP请求超过限制
&当前Key请求超过限制
&测试KEY超过请求限制
&appKey按需剩余请求次数为零
&请求IP无效
&没有查询到结果
&当前请求频率过高超过权限限制
免费赠送(用户申请时,系统自动赠送)
包月体验用户
50&次/天&&(免费体验一个月)
按次套餐包
包月套餐包
包月体验用户
50&次/天&&
500&次/天&&
2500&次/天&&
¥299.00&&
5000&次/天&&
¥499.00&&
10000&次/天&&
超级不限次用户
¥999.00&&
不限&次/天&&
为什么选择Haoservice数据?
购买Haoservice数据的服务享有
专业的技术支持维护,高性能服务器,安全防护
API代码示例中心:
常见问题:
友情链接:
关注haoservice微信公众帐户
关注haoservice微信公众帐户,您可以
1、随时随地获取haoservice的最新动态
2、随时随地与haoservice客服取得联系空气质量排行榜-易源接口总线-api接口中心
PM2.5空气质量指数
提供者: showapi
本接口每小时更新。空气质量指数提供实时空气质量情况,目前支持全国161个城市;服务支持功能包括:实时查询空气质量,小时粒度;实时给出空气质量AQI指数,并给出空气质量级别和首要污染物
浏览量:2474
API调用量:101565
使用人数:69
授权签名(重要)
价格一览表
请求URL地址
注意:接口支持https,更安全,但稍慢一些,你懂的。请根据自己的情况进行选择。
HTTP协议,支持GET/POST方法。
1.系统级参数:
2.应用级参数
以JSON格式返回结果。
1.系统级参数:
2.应用级参数:
空气质量指数(AQI),即air quality index,是定量描述空气质量状况的无纲量指数
一氧化碳1小时平均
二氧化氮1小时平均
臭氧1小时平均
臭氧8小时滑动平均
颗粒物(粒径小于等于10μm)1小时平均
颗粒物(粒径小于等于2.5μm)1小时平均
-&primary_pollutant
首要污染物
空气质量指数类别,有“优、良、轻度污染、中度污染、重度污染、严重污染”6类
String res=new ShowApiRequest(&/104-41&,&my_appId&,&my_appSecret&)
System.out.println(res);
public static void main(String path[]) throws Exception {
URL u=new URL("/104-41?showapi_appid=myappid&showapi_timestamp=56&showapi_sign=mysecret");
InputStream in=u.openStream();
ByteArrayOutputStream out=new ByteArrayOutputStream();
byte buf[]=new byte[1024];
int read = 0;
while ((read = in.read(buf)) > 0) {
out.write(buf, 0, read);
if (in != null) {
in.close();
byte b[]=out.toByteArray( );
System.out.println(new String(b,"utf-8"));
//字段值为中文、空格、特殊符号的地方需要做urlencode,编码为utf-8。用js的方式就是:
//encodeURIComponent('中文')
//比如"中文"转换后就是%25E4%25B8%25AD%25E6%
&/104-41?showapi_appid=123&showapi_timestamp= 14:22:39&showapi_sign=use_my_sign&&
//以下使用的是md5签名方式,并不是简单签名
header("Content-Type:text/charset=UTF-8");
$showapi_appid = 'myappid';
//替换此值
$showapi_sign = 'mysecret';
//替换此值。
$showapi_timestamp = date('YmdHis');
$paramArr = array(
'showapi_appid'=> $showapi_appid,
'showapi_timestamp' => $showapi_timestamp
// other parameter
echo date('YmdHis')."\n";
function createSign ($paramArr) {
global $showapi_
$sign = "";
ksort($paramArr);
foreach ($paramArr as $key => $val) {
if ($key != '' && $val != '') {
$sign .= $key.$
$sign.=$showapi_
echo "sorted para is:".$sign."\n";
$sign = strtoupper(md5($sign));
echo "md5 result is :".$sign."\n";
function createStrParam ($paramArr) {
$strParam = '';
foreach ($paramArr as $key => $val) {
if ($key != '' && $val != '') {
$strParam .= $key.'='.urlencode($val).'&';
return $strP
$sign = createSign($paramArr);
$strParam = createStrParam($paramArr);
$strParam .= 'showapi_sign='.$
$url = '/104-41?'.$strP
echo $url."\n";
$result = file_get_contents($url);
$result = json_decode($result);
echo "json is :";
print_r($result->showapi_res_code);
echo "\n";
//以下代码仅为演示用,具体传入参数请参看接口描述详情页.
//需要引用android-async-http库(sdk中已经包括此jar包) ,其项目地址为: /android-async-http/
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView txt = (TextView) this.findViewById(R.id.textView1);
Button myBtn = (Button) this.findViewById(R.id.button1);
final AsyncHttpResponseHandler resHandler=new AsyncHttpResponseHandler(){
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable e) {
//做一些异常处理
e.printStackTrace();
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
System.out.println("response is :"+new String(responseBody,"utf-8"));
txt.setText(new String(responseBody,"utf-8")+new Date());
//在此对返回内容做处理
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
myBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
new ShowApiRequest( "/104-41", "appid", "secret")
.setResponseHandler(resHandler)
&showapi_res_code&: 0,
&showapi_res_error&: &&,
&showapi_res_body&: {
&list&: &[]&
免费套餐_无认证版
0时间:永久
不限调用次数
1次/秒调用频率
免费套餐_实名认证版
0时间:永久
不限调用次数
3次/秒调用频率
邮箱认证 要求
手机认证 要求
实名认证 要求
免费套餐_基本认证版
0时间:永久
不限调用次数
2次/秒调用频率
邮箱认证 要求
手机认证 要求
免费套餐_无认证版
0时间:永久
不限调用次数
1次/秒调用频率
免费套餐_实名认证版
0时间:永久
不限调用次数
3次/秒调用频率
邮箱认证 要求
手机认证 要求
实名认证 要求
免费套餐_基本认证版
0时间:永久
不限调用次数
2次/秒调用频率
邮箱认证 要求
手机认证 要求
本网站所列接口及文档全部由SHOWAPI网站提供,并对其拥有最终解释权 Powered By SHOWAPI为了让更多人更快更好的知道PM2.5,我们做了一个艰难的决定,决定无偿开放PM2.5数据接口,以方便更多的开发者使用!
申请前须知!
认真看看下面的免责声明;
你需要具备编程能力,或者你的团队有开发人员;
你必须明白这个AppKey是怎么用的,我相信有编程能力的人能够看懂API文档;我们没有PC版的下载数据的客户端,这不是激活码,以后对于如何使用AppKey这个问题一概不再回复;
我们目前不提供历史数据,只提供最近一小时的数据,API没有办法获取从XX时间到XX时间的数据;
需要历史数据的,目前的办法是通过API自己慢慢收集;
我们提供的是按新的《环境空气质量标准》(GB)发布的环境空气质量指数(AQI)相关数据,不包含按旧标准发布的空气污染指数(API)相关数据,新标准是2012年才发布的,所以不要再问我们有没有最近xx年的数据;
对于以下几种情况的人,请使用公共测试AppKey:初学者、学习如何发送HTTP请求和解析JSON格式数据的;就想看看数据长什么样,纯粹出于好奇心的;还没想好拿到AppKey之后要做什么东西的;用于测试,但又不说清楚测试什么东西的;作品还在构想或正在开发中的开发者。公共测试AppKey在下方,往下拉;
以下要求只针对已经有上线作品或作品开发完毕需要正式上线的开发者,如果你的作品正在构想或开发中但想申请AppKey,你必须有理由说服我;
App开发:请给出应用名称和App Store、Google Play或其他市场的下载链接(已经有作品的开发者);
Web应用:请给出网站名称和网址,个人博客也一样需要;
微信应用:请给出公众平台的账号,让我可以关注;
微博应用:请给出微博昵称和微博地址;
学术研究:请给出机构或学校的名称,具体到学院、专业、年级,说明数据将用于研究的方向;
企业应用:请给出企业名称和网址,数据使用的项目、场景等;用于政府机构的,一样需要提供这些信息;
浏览器插件:请给出浏览器插件名称和下载地址;
其他:请给出尽可能详细的信息,让我明白你用这些数据干嘛;
最后,认真填写申请理由,让我明白你的想法。
关于PM25.in的免责声明:
第一条、Pm25.in是Labs@Bestapp.us为广大应用开发者免费提供空气质量数据的一个公益性网站,Pm25.in的数据全部来源于网友提供的国家环保网站公开数据,我们根据国家环保网站的实时数据进行二次核实;Pm25.in所提供的数据仅供开发者作为开发参考信息,开发者据此做出的行为及所产生的后果与Labs@Bestapp.us及其关联单位无关。
第二条、由于不可抗力或互联网传输原因等造成Pm25.in信息传播的延迟、中断或缺失,Pm25.in及Labs@Bestapp.us不承担任何责任;因不可预测或无法控制的系统故障、设备故障、通讯故障等原因给用户造成损失的,Pm25.in及Labs@Bestapp.us不承担任何赔偿责任。
第三条、Pm25.in及Labs@Bestapp.us尽全力给开发者提供及时、准确的空气质量数据及相关产品服务,但不承担因数据准确率、真实性和全面性等原因引起的任何损失、损害,因使用上述数据而产生的一切风险由开发者自身承担。
第四条、未经Labs@Bestapp.us事先许可,使用Pm25.in API接口数据的开发者不得自行修改本网站提供的数据,如果对Pm25.
in提供的数据有疑义,请直接按照本网站提供的联系方式与我们联系,且不得实施任何有损Pm25.in及Labs@Bestapp.us声誉的行为,否则,Pm25.in及Labs@Bestapp.us有权要求该开发使用者承担因此对Pm25.in及Labs@Bestapp.us所造成的一切损失。
第五条、本声明的最终解释权归Labs@Bestapp.us所有。
以上风险提示,您已阅读并理解,如果继续使用,即表明您同意承担使用Labs@Bestapp.us所有服务可能存在的风险。
公共测试AppKey:5j1znBVAsnSf5xQyNQyq
这个AppKey每小时调用的次数限制和单独申请的AppKey没什么两样,大家不要恶意使用而导致他人用不了。我相信大家是有节操的人,做损人不利己的事,请三思,为自己积点德。
需要数据做测试的开发者,请求一次之后,把结果保存成json格式的文件,放在本地就可以测试了,等作品开发完成再来申请AppKey。
拿到AppKey之后
认真看下面的API文档,特别是一开头的注意部分;
不要再问为什么看到的是乱码,因为用了UTF-8编码;
不要再问你用的语言下要怎么获取数据,要怎么转换编码,这是你自己的事,你需要自己去学习;
不要把API返回的error信息当透明;
记得关注微博 '@PM25分享',API方面的变动会发布在微博上。
Pm25.in API
文档更新时间:
1、所有API的调用,必须附带"token"这个参数,即申请的AppKey;
2、API中的'city'参数支持中文、拼音和区号,例如:"city=广州","city=guangzhou","city=020";
3、因为参数使用中文需要encode,所以推荐开发者city参数尽量使用拼音;
4、重名情况:泰州的拼音为"taizhoushi",台州的拼音为"taizhou";
5、API返回的JSON格式数据是经过UTF-8编码的,这个文档里的"成功返回示例"为了直观,已经decode过;
6、由于有些开发者对API调用过于频繁,严重影响了服务器,现在对API调用次数作出调整:1.10和1.11每小时15次、1.12每小时5次、1.13每小时15次,其余每小时500次;
7、由于数据源方面的原因,API中的24小时均值、station_code有时返回可能为空;
数据格式说明:
PM25.in网站提供的空气质量指数实时数据来源于国家环境保护部,API返回的数据包括了以下内容:
空气质量指数(AQI),即air quality index,是定量描述空气质量状况的无纲量指数
position_name
监测点名称
station_code
监测点编码
二氧化硫1小时平均
二氧化硫24小时滑动平均
二氧化氮1小时平均
二氧化氮24小时滑动平均
颗粒物(粒径小于等于10μm)1小时平均
颗粒物(粒径小于等于10μm)24小时滑动平均
一氧化碳1小时平均
一氧化碳24小时滑动平均
臭氧1小时平均
臭氧日最大1小时平均
臭氧8小时滑动平均
臭氧日最大8小时滑动平均
颗粒物(粒径小于等于2.5μm)1小时平均
颗粒物(粒径小于等于2.5μm)24小时滑动平均
primary_pollutant
首要污染物
空气质量指数类别,有“优、良、轻度污染、中度污染、重度污染、严重污染”6类
time_point
数据发布的时间
1、空气质量数据相关接口
1.1、获取一个城市所有监测点的PM2.5数据
http://www.pm25.in/api/querys/pm2_5.json
* city:城市名称,必选参数
* avg:是否返回一个城市所有监测点数据均值的标识,可选参数,默认是true,不需要均值时传这个参数并设置为false
* stations:是否只返回一个城市均值的标识,可选参数,默认是yes,不需要监测点信息时传这个参数并设置为no
一个数组,里面的一项是一个监测点的PM2.5信息,其中每一项数据包括
* pm2_5_24h
* position_name
* primary_pollutant
* station_code
* time_point
默认情况下,最后一项是所有监测点的均值(即一个城市的值)
请求示例:
http://www.pm25.in/api/querys/pm2_5.json?city=珠海&token=xxxxxx
http://www.pm25.in/api/querys/pm2_5.json?city=zhuhai&token=xxxxxx
成功返回示例:
"aqi": 82,
"area": "珠海",
"pm2_5": 31,
"pm2_5_24h": 60,
"position_name": "吉大",
"primary_pollutant": "颗粒物(PM2.5)",
"quality": "良",
"station_code": "1367A",
"time_point": "T19:00:00Z"
"aqi": 108,
"area": "珠海",
"pm2_5": 0,
"pm2_5_24h": 53,
"position_name": "斗门",
"primary_pollutant": "臭氧8小时",
"quality": "轻度污染",
"station_code": "1370A",
"time_point": "T19:00:00Z"
"aqi": 99,
"area": "珠海",
"pm2_5": 39,
"pm2_5_24h": 67,
"position_name": null,
"primary_pollutant": null,
"quality": "良",
"station_code": null,
"time_point": "T19:00:00Z"
可能的错误返回信息:
"error": "参数不能为空"
"error": "该城市还未有PM2.5数据"
"error": "Sorry,您这个小时内的API请求次数用完了,休息一下吧!"
"error": "You need to sign in or sign up before continuing."
***stations = no时的情况***
请求示例:
http://www.pm25.in/api/querys/pm2_5.json?city=guangzhou&token=xxxxxx&stations=no
成功返回示例:
"aqi": 151,
"area": "广州",
"pm2_5": 106,
"pm2_5_24h": 115,
"quality": "中度污染",
"time_point": "T11:00:00Z"
以下的API和上面的这个API大同小异,所以就不作太详细的说明了。
1.2、获取一个城市所有监测点的PM10数据
http://www.pm25.in/api/querys/pm10.json
* city:必选
* avg:可选
* stations:可选
一个数组,其中每一项数据包括
* pm10_24h
* position_name
* primary_pollutant
* station_code
* time_point
1.3、获取一个城市所有监测点的CO数据
http://www.pm25.in/api/querys/co.json
* city:必选
* avg:可选
* stations:可选
一个数组,其中每一项数据包括
* position_name
* primary_pollutant
* station_code
* time_point
1.4、获取一个城市所有监测点的NO2数据
http://www.pm25.in/api/querys/no2.json
* city:必选
* avg:可选
* stations:可选
一个数组,其中每一项数据包括
* position_name
* primary_pollutant
* station_code
* time_point
1.5、获取一个城市所有监测点的SO2数据
http://www.pm25.in/api/querys/so2.json
* city:必选
* avg:可选
* stations:可选
一个数组,其中每一项数据包括
* position_name
* primary_pollutant
* station_code
* time_point
1.6、获取一个城市所有监测点的O3数据
http://www.pm25.in/api/querys/o3.json
* city:必选
* avg:可选
* stations:可选
一个数组,其中每一项数据包括
* o3_8h_24h
* position_name
* primary_pollutant
* station_code
* time_point
1.7、获取一个城市所有监测点的AQI数据(含详情)
http://www.pm25.in/api/querys/aqi_details.json
* city:必选
* avg:可选
* stations:可选
一个数组,其中每一项数据包括
* o3_8h_24h
* pm10_24h
* pm2_5_24h
* position_name
* primary_pollutant
* station_code
* time_point
1.8、获取一个城市所有监测点的AQI数据(不含详情,仅AQI)
http://www.pm25.in/api/querys/only_aqi.json
* city:必选
* avg:可选
* stations:可选
一个数组,其中每一项数据包括
* position_name
* primary_pollutant
* station_code
* time_point
1.9、获取一个监测点的AQI数据(含详情)
http://www.pm25.in/api/querys/aqis_by_station.json
* station_code:必选
一个数组,其中的一项数据包括
* o3_8h_24h
* pm10_24h
* pm2_5_24h
* position_name
* primary_pollutant
* station_code
* time_point
1.10、获取一个城市的监测点列表
http://www.pm25.in/api/querys/station_names.json
* city:必选
* stations:值是一个数组,里面的一个数组又包含了station_name和station_code
成功返回示例:
"city": "珠海",
"stations": [
"station_name": "吉大",
"station_code": "1367A"
"station_name": "前山",
"station_code": "1368A"
"station_name": "唐家",
"station_code": "1369A"
"station_name": "斗门",
"station_code": "1370A"
特别提示:如果不传city这个参数,将返回全国的监测点,不鼓励频繁调用;
1.11、获取实施了新《环境空气质量标准》的城市列表,即有PM2.5数据的城市列表
http://www.pm25.in/api/querys.json
* cities:值是一个数组
成功返回示例:
"cities": [
1.12、获取所有城市的空气质量详细数据
http://www.pm25.in/api/querys/all_cities.json
一个数组,里面包含目前支持的190个城市所有监测点的详细信息,一共946项,其中每项的信息有
* o3_8h_24h
* pm10_24h
* pm2_5_24h
* position_name
* primary_pollutant
* station_code
* time_point
1.13、获取全部城市的空气质量指数(AQI)排行榜
http://www.pm25.in/api/querys/aqi_ranking.json
一个数组,里面包含目前支持的190个城市AQI排行榜信息,其中每项的信息有
* o3_8h_24h
* pm10_24h
* pm2_5_24h
* primary_pollutant
* time_point
说明primary_pollutant的值可能为[二氧化硫","二氧化氮","颗粒物(PM10)","颗粒物(PM2.5)","一氧化碳","臭氧1小时","臭氧8小时"]中的一项或多项组合,出现多项时,各项之间用逗号","分隔;AQI低于50时,没有值,为"".
成功返回示例:
"aqi": 24,
"area": "昆明",
"co": 1.173,
"co_24h": 1.362,
"no2": 27,
"no2_24h": 32,
"o3_24h": 22,
"o3_8h": 7,
"o3_8h_24h": 18,
"pm10": 9,
"pm10_24h": 24,
"pm2_5": 11,
"pm2_5_24h": 15,
"quality": "优",
"level": "一级",
"so2_24h": 8,
"primary_pollutant": "",
"time_point": "T14:00:00Z"
"aqi": 51,
"area": "福州",
"co": 0.562,
"co_24h": 0.544,
"no2": 20,
"no2_24h": 26,
"o3_24h": 93,
"o3_8h": 64,
"o3_8h_24h": 67,
"pm10": 59,
"pm10_24h": 50,
"pm2_5": 37,
"pm2_5_24h": 30,
"quality": "良",
"level": "二级",
"so2": 12,
"so2_24h": 10,
"primary_pollutant": "颗粒物(PM10)",
"time_point": "T14:00:00Z"
"aqi": 58,
"area": "泉州",
"co": 0.57,
"co_24h": 0.47,
"no2": 16,
"no2_24h": 17,
"o3": 149,
"o3_24h": 149,
"o3_8h": 108,
"o3_8h_24h": 108,
"pm10": 92,
"pm10_24h": 64,
"pm2_5": 39,
"pm2_5_24h": 29,
"quality": "良",
"level": "二级",
"so2": 12,
"so2_24h": 8,
"primary_pollutant": "臭氧8小时,颗粒物(PM10)",
"time_point": "T14:00:00Z"
"aqi": 500,
"area": "哈尔滨",
"co": 4.053,
"co_24h": 3.942,
"no2": 166,
"no2_24h": 165,
"o3_24h": 44,
"o3_8h": 9,
"o3_8h_24h": 35,
"pm10": 910,
"pm10_24h": 860,
"pm2_5": 866,
"pm2_5_24h": 719,
"quality": "严重污染",
"level": "六级",
"so2": 61,
"so2_24h": 47,
"primary_pollutant": "颗粒物(PM2.5),颗粒物(PM10)",
"time_point": "T14:00:00Z"
Q:如何申请AppKey?
Q:如果猜不到,你可以告诉我吗?
A:好,你填好上面的表格,我就把答案Email给你。
Q:申请之后多久可以收到Appkey?
A:我们的工作人员一般会在5天之内处理完的,周末和节假日除外。
Q:过了5天还没收到,我该咋办?
A:1、你是否认真填写了申请理由呢?2、垃圾邮件里面找找?3、请看最后面一条吐槽!4、邮件咨询
Q:我申请时,提示email错误怎么办?
A:看起来,你是重复申请了。
Q:收到AppKey之后,我该做些什么?
A:你除了进行测试外,请一个星期内发邮件回来进行反馈,包括应用名称、团队名称、负责人、预估的用户量、API调用次数等,越详细越好。个人开发者或申请用来学习的,团队名称等可省略。如果一个月之后也还不反馈信息的,我们将有权收回AppKey。
纯吐槽: 能认真填写email地址不?我的邮件发出之后提示这个邮件地址不存在啊,魂淡!!!扫一扫二维码添加心知天气微信公众号,一键自动定位或语音快速查询全球天气,还可以分享给好友或朋友圈哦。
心知天气API提供中国2567个城市和国际900个城市的实况、预报、PM2.5、生活指数等天气数据。通过天气API开发你自己的天气应用。
用心知天气网页云插件向导定制完美匹配你的网站的天气插件,并将生成的一行代码加到你的网站,你的网站即可立刻拥有天气查询功能。
支持中国2567个市区县实时和7天预报,以及国际900个城市的实时和10天预报。
官方授权数据
我们的天气数据来自权威气象机构授权的官方数据,为您提供正规、合法的天气服务。
智能多数据源
智能融合国内外多家气象机构的优势数据,能够提供更加丰富、精准和稳定的天气服务。
空气质量指数
提供全国190个城市946监测站的AQI、PM2.5、PM10、CO、NO2等空气质量数据。感谢pm25.in提供数据。
API提供穿衣、洗车、紫外线、感冒、运动、旅游6大生活指数数据。提供最贴心的生活提示。
提供及时更新的中国城市气象灾害预警数据。防患胜于救灾,气象灾害早知道。
24小时逐时预报
未来24小时逐小时预报提供精确到小时的天气预报,让您知道何时下雨何时晴天。
24小时历史记录
24小时历史天气记录提供过去24小时每小时的温度、天气、气压、湿度等数据,让您可以跟踪天气变化的趋势。
天气预报准确度
获取每个城市根据历史数据计算的每天天气预报准确度,让您对天气预报到底有多准确有一个具体和量化的认识。
自动通过经纬度、IP地址、城市中文名、城市英文名或城市ID返回精确到市区县的天气。
支持简体中文、繁体中文和英文三种语言,并支持自动判断访问者语言。
服务可用性高达99.9%以上。BGP和CDN保证了所有请求快速稳定响应。
7*24服务监控
& 2014 北京心知科技有限公司

我要回帖

更多关于 北京空气质量指数查询 的文章

 

随机推荐