为了让更多人更快更好的知道PM2.5,我们做了一个艰难的决定,决定无偿开放PM2.5数据接口,以方便更多的开发者使用!

Pm25_logo_200_nocircle
重要

申请前须知!

  1. 认真看看下面的免责声明;
  2. 你需要具备编程能力,或者你的团队有开发人员;
  3. 你必须明白这个AppKey是怎么用的,我相信有编程能力的人能够看懂API文档;我们没有PC版的下载数据的客户端,这不是激活码,以后对于如何使用AppKey这个问题一概不再回复;
  4. 我们目前不提供历史数据,只提供最近一小时的数据,API没有办法获取从XX时间到XX时间的数据;
  5. 需要历史数据的,目前的办法是通过API自己慢慢收集;
  6. 我们提供的是按新的《环境空气质量标准》(GB3095-2012)发布的环境空气质量指数(AQI)相关数据,不包含按旧标准发布的空气污染指数(API)相关数据,新标准是2012年才发布的,所以不要再问我们有没有最近xx年的数据;
  7. 对于以下几种情况的人,请使用公共测试AppKey:初学者、学习如何发送HTTP请求和解析JSON格式数据的;就想看看数据长什么样,纯粹出于好奇心的;还没想好拿到AppKey之后要做什么东西的;用于测试,但又不说清楚测试什么东西的;作品还在构想或正在开发中的开发者。公共测试AppKey在下方,往下拉;
  8. 以下要求只针对已经有上线作品或作品开发完毕需要正式上线的开发者,如果你的作品正在构想或开发中但想申请AppKey,你必须有理由说服我;
  9. App开发:请给出应用名称和App Store、Google Play或其他市场的下载链接(已经有作品的开发者);
  10. Web应用:请给出网站名称和网址,个人博客也一样需要;
  11. 微信应用:请给出公众平台的账号,让我可以关注;
  12. 微博应用:请给出微博昵称和微博地址;
  13. 学术研究:请给出机构或学校的名称,具体到学院、专业、年级,说明数据将用于研究的方向;
  14. 企业应用:请给出企业名称和网址,数据使用的项目、场景等;用于政府机构的,一样需要提供这些信息;
  15. 浏览器插件:请给出浏览器插件名称和下载地址;
  16. 其他:请给出尽可能详细的信息,让我明白你用这些数据干嘛;
  17. 最后,认真填写申请理由,让我明白你的想法。

重要

关于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所有服务可能存在的风险。

我相信程序员都是有节操的,不会恶意使用这个Key!

公共测试AppKey:5j1znBVAsnSf5xQyNQyq

这个AppKey每小时调用的次数限制和单独申请的AppKey没什么两样,大家不要恶意使用而导致他人用不了。我相信大家是有节操的人,做损人不利己的事,请三思,为自己积点德。

需要数据做测试的开发者,请求一次之后,把结果保存成json格式的文件,放在本地就可以测试了,等作品开发完成再来申请AppKey。


重要

拿到AppKey之后

  1. 认真看下面的API文档,特别是一开头的注意部分;
  2. 不要再问为什么看到的是乱码,因为用了UTF-8编码;
  3. 不要再问你用的语言下要怎么获取数据,要怎么转换编码,这是你自己的事,你需要自己去学习;
  4. 不要把API返回的error信息当透明;
  5. 记得关注微博 '@PM25分享',API方面的变动会发布在微博上。

  

Pm25.in API

文档更新时间:2014-01-03 注意 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 空气质量指数(AQI),即air quality index,是定量描述空气质量状况的无纲量指数
area 城市名称
position_name 监测点名称
station_code 监测点编码
so2 二氧化硫1小时平均
so2_24h 二氧化硫24小时滑动平均
no2 二氧化氮1小时平均
no2_24h 二氧化氮24小时滑动平均
pm10 颗粒物(粒径小于等于10μm)1小时平均
pm10_24h 颗粒物(粒径小于等于10μm)24小时滑动平均
co 一氧化碳1小时平均
co_24h 一氧化碳24小时滑动平均
o3 臭氧1小时平均
o3_24h 臭氧日最大1小时平均
o3_8h 臭氧8小时滑动平均
o3_8h_24h 臭氧日最大8小时滑动平均
pm2_5 颗粒物(粒径小于等于2.5μm)1小时平均
pm2_5_24h 颗粒物(粒径小于等于2.5μm)24小时滑动平均
primary_pollutant 首要污染物
quality 空气质量指数类别,有“优、良、轻度污染、中度污染、重度污染、严重污染”6类
time_point 数据发布的时间

1、空气质量数据相关接口

1.1、获取一个城市所有监测点的PM2.5数据
地址 http://www.pm25.in/api/querys/pm2_5.json
方法 GET
参数 * city:城市名称,必选参数 * avg:是否返回一个城市所有监测点数据均值的标识,可选参数,默认是true,不需要均值时传这个参数并设置为false * stations:是否只返回一个城市均值的标识,可选参数,默认是yes,不需要监测点信息时传这个参数并设置为no
返回 一个数组,里面的一项是一个监测点的PM2.5信息,其中每一项数据包括 * aqi * area * pm2_5 * pm2_5_24h * position_name * primary_pollutant * quality * 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": "2013-03-07T19:00:00Z" }, ... ... ... { "aqi": 108, "area": "珠海", "pm2_5": 0, "pm2_5_24h": 53, "position_name": "斗门", "primary_pollutant": "臭氧8小时", "quality": "轻度污染", "station_code": "1370A", "time_point": "2013-03-07T19:00:00Z" }, { "aqi": 99, "area": "珠海", "pm2_5": 39, "pm2_5_24h": 67, "position_name": null, "primary_pollutant": null, "quality": "良", "station_code": null, "time_point": "2013-03-07T19: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": "2013-04-16T11:00:00Z" } ] 以下的API和上面的这个API大同小异,所以就不作太详细的说明了。
1.2、获取一个城市所有监测点的PM10数据
地址 http://www.pm25.in/api/querys/pm10.json
方法 GET
参数 * city:必选 * avg:可选 * stations:可选
返回 一个数组,其中每一项数据包括 * aqi * area * pm10 * pm10_24h * position_name * primary_pollutant * quality * station_code * time_point
1.3、获取一个城市所有监测点的CO数据
地址 http://www.pm25.in/api/querys/co.json
方法 GET
参数 * city:必选 * avg:可选 * stations:可选
返回 一个数组,其中每一项数据包括 * aqi * area * co * co_24h * position_name * primary_pollutant * quality * station_code * time_point
1.4、获取一个城市所有监测点的NO2数据
地址 http://www.pm25.in/api/querys/no2.json
方法 GET
参数 * city:必选 * avg:可选 * stations:可选
返回 一个数组,其中每一项数据包括 * aqi * area * no2 * no2_24h * position_name * primary_pollutant * quality * station_code * time_point
1.5、获取一个城市所有监测点的SO2数据
地址 http://www.pm25.in/api/querys/so2.json
方法 GET
参数 * city:必选 * avg:可选 * stations:可选
返回 一个数组,其中每一项数据包括 * aqi * area * so2 * so2_24h * position_name * primary_pollutant * quality * station_code * time_point
1.6、获取一个城市所有监测点的O3数据
地址 http://www.pm25.in/api/querys/o3.json
方法 GET
参数 * city:必选 * avg:可选 * stations:可选
返回 一个数组,其中每一项数据包括 * aqi * area * o3 * o3_24h * o3_8h * o3_8h_24h * position_name * primary_pollutant * quality * station_code * time_point
1.7、获取一个城市所有监测点的AQI数据(含详情)
地址 http://www.pm25.in/api/querys/aqi_details.json
方法 GET
参数 * city:必选 * avg:可选 * stations:可选
返回 一个数组,其中每一项数据包括 * aqi * area * co * co_24h * no2 * no2_24h * o3 * o3_24h * o3_8h * o3_8h_24h * pm10 * pm10_24h * pm2_5 * pm2_5_24h * position_name * primary_pollutant * quality * so2 * so2_24h * station_code * time_point
1.8、获取一个城市所有监测点的AQI数据(不含详情,仅AQI)
地址 http://www.pm25.in/api/querys/only_aqi.json
方法 GET
参数 * city:必选 * avg:可选 * stations:可选
返回 一个数组,其中每一项数据包括 * aqi * area * position_name * primary_pollutant * quality * station_code * time_point
1.9、获取一个监测点的AQI数据(含详情)
地址 http://www.pm25.in/api/querys/aqis_by_station.json
方法 GET
参数 * station_code:必选
返回 一个数组,其中的一项数据包括 * aqi * area * co * co_24h * no2 * no2_24h * o3 * o3_24h * o3_8h * o3_8h_24h * pm10 * pm10_24h * pm2_5 * pm2_5_24h * position_name * primary_pollutant * quality * so2 * so2_24h * station_code * time_point
1.10、获取一个城市的监测点列表
地址 http://www.pm25.in/api/querys/station_names.json
方法 GET
参数 * city:必选
返回 * 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
方法 GET
参数 * 无
返回 * cities:值是一个数组
成功返回示例: { "cities": [ "上海", "东莞", "中山", ... ... ... "长春", "长沙", "青岛" ] }
1.12、获取所有城市的空气质量详细数据
地址 http://www.pm25.in/api/querys/all_cities.json
方法 GET
参数 * 无
返回 一个数组,里面包含目前支持的190个城市所有监测点的详细信息,一共946项,其中每项的信息有 * aqi * area * co * co_24h * no2 * no2_24h * o3 * o3_24h * o3_8h * o3_8h_24h * pm10 * pm10_24h * pm2_5 * pm2_5_24h * position_name * primary_pollutant * quality * so2 * so2_24h * station_code * time_point
1.13、获取全部城市的空气质量指数(AQI)排行榜
地址 http://www.pm25.in/api/querys/aqi_ranking.json
方法 GET
参数 * 无
返回 一个数组,里面包含目前支持的190个城市AQI排行榜信息,其中每项的信息有 * aqi * area * co * co_24h * no2 * no2_24h * o3 * o3_24h * o3_8h * o3_8h_24h * pm10 * pm10_24h * pm2_5 * pm2_5_24h * quality * level * so2 * so2_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": 16, "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": 6, "so2_24h": 8, "primary_pollutant": "", "time_point": "2013-10-21T14:00:00Z" }, ...... { "aqi": 51, "area": "福州", "co": 0.562, "co_24h": 0.544, "no2": 20, "no2_24h": 26, "o3": 92, "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": "2013-10-21T14: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": "2013-10-21T14:00:00Z" }, ...... { "aqi": 500, "area": "哈尔滨", "co": 4.053, "co_24h": 3.942, "no2": 166, "no2_24h": 165, "o3": 13, "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": "2013-10-21T14:00:00Z" } ]
captcha
验证码

常见问题

Q:如何申请AppKey?

A:你猜

Q:如果猜不到,你可以告诉我吗?

A:好,你填好上面的表格,我就把答案Email给你。

Q:申请之后多久可以收到Appkey?

A:我们的工作人员一般会在5天之内处理完的,周末和节假日除外。

Q:过了5天还没收到,我该咋办?

A:1、你是否认真填写了申请理由呢?2、垃圾邮件里面找找?3、请看最后面一条吐槽!4、邮件咨询

Q:我申请时,提示email错误怎么办?

A:看起来,你是重复申请了。

Q:收到AppKey之后,我该做些什么?

A:你除了进行测试外,请一个星期内发邮件回来进行反馈,包括应用名称、团队名称、负责人、预估的用户量、API调用次数等,越详细越好。个人开发者或申请用来学习的,团队名称等可省略。如果一个月之后也还不反馈信息的,我们将有权收回AppKey。

纯吐槽: 能认真填写email地址不?我的邮件发出之后提示这个邮件地址不存在啊,魂淡!!!

回到顶部