{"api":"Air quality","apiRows":{"Employee profile":4352,"Employee email":3885,"Email validation":5054,"Employee phone":1429,"Company profile":1521,"Company headcount":487,"Phone validation":1447,"Post comments":497,"Post reactions":410,"Employee lookalikes":236,"Company lookalikes":767,"Company technologies":510,"Company job count":67,"Employee posts":523,"Company posts":518,"Company funding":313,"Company jobs":409,"Employee search":1565,"Company search":741,"Job search":565,"Reverse email lookup":923,"Post search":423,"Post details":579,"Job details":488,"Employee comments":257,"Employee reactions":210,"Post reposts":120,"Employee recommendations":96,"Job lookalikes":55,"Employee articles":47,"Company enrichment":2481,"People search":1982,"Company discovery":2032,"Job postings":578,"Job posting details":340,"Person enrichment":327,"Leadership changes":149,"Company hierarchy":172,"Web search":927,"SERP":4524,"Search autocomplete":81,"News search":1111,"Image search":634,"Video search":647,"Web scraping":2565,"Keyword research":118,"Ranked keywords":83,"Related keywords":174,"Backlinks":121,"Domain authority":110,"X profile":573,"X posts":401,"Instagram profile":551,"Instagram posts":352,"TikTok profile":368,"TikTok videos":341,"YouTube channel":370,"YouTube channel videos":231,"Reddit profile":143,"Reddit posts":120,"Facebook page":208,"Facebook posts":183,"Threads profile":127,"Threads posts":129,"Bluesky profile":14,"Bluesky posts":14,"Telegram channel":33,"Telegram channel posts":33,"Pinterest search":53,"Pinterest pin":49,"Pinterest board pins":49,"Pinterest user boards":24,"Hacker News search":4,"Hacker News story comments":4,"Twitch profile":82,"Twitch videos":64,"Twitch clip":53,"Kick clip":25,"Snapchat profile":103,"Truth Social profile":51,"Truth Social posts":57,"GitHub profile":19,"GitHub repository":19,"GitHub user repositories":19,"Douyin profile":36,"Douyin user videos":41,"Douyin video":39,"Weibo profile":36,"Weibo user posts":28,"Weibo post":33,"Xiaohongshu profile":26,"Xiaohongshu user notes":26,"Xiaohongshu note":23,"Zhihu profile":16,"Zhihu question answers":6,"Kuaishou profile":13,"Kuaishou user videos":23,"Kuaishou video":13,"Bilibili user videos":16,"Bilibili video":16,"Facebook ads":73,"Google ads":94,"LinkedIn ads":31,"TikTok ads":22,"G2 reviews":69,"Capterra reviews":65,"Trustpilot reviews":116,"Glassdoor reviews":66,"App Store app":171,"App Store reviews":155,"Google Play app":170,"Google Play reviews":152,"Amazon product":276,"Amazon search":265,"Google Shopping product":132,"Walmart product":171,"Walmart search":161,"eBay product":142,"eBay search":157,"TikTok Shop product":25,"TikTok Shop search":23,"Facebook Marketplace listing":35,"Facebook Marketplace search":51,"Zillow search":80,"Zillow property":85,"Redfin search":30,"Redfin property":35,"Realtor.com search":50,"Realtor.com property":42,"Google Hotels search":40,"Google Hotels property":29,"Booking.com search":27,"Booking.com property":25,"Airbnb search":31,"Airbnb listing":29,"Tripadvisor search":49,"Tripadvisor reviews":39,"CarGurus search":11,"CarGurus listing":11,"AutoScout24 search":16,"mobile.de search":27,"mobile.de listing":22,"Copart lot":20,"IAAI lot":20,"AutoScout24 listing":11,"Auto Trader UK search":11,"Auto Trader UK listing":11,"Bring a Trailer search":11,"Bring a Trailer lot":11,"VIN decoder":173,"Current weather":266,"Weather forecast":421,"Air quality":254,"App Store search":146,"Google Play search":143,"ChatGPT answer":112,"Perplexity answer":47,"Gemini answer":114,"Bing Copilot answer":92,"Business verification":88},"treeCounts":{"Employee profile":{"best":157,"top":3},"Employee email":{"best":161,"top":3},"Email validation":{"best":202,"top":3},"Employee phone":{"best":93,"top":3},"Company profile":{"best":91,"top":3},"Company headcount":{"best":28,"top":3},"Phone validation":{"best":66,"top":3},"Post comments":{"best":36,"top":3},"Post reactions":{"best":27,"top":3},"Employee lookalikes":{"best":16,"top":3},"Company lookalikes":{"best":39,"top":3},"Company technologies":{"best":46,"top":3},"Company job count":{"best":7,"top":3},"Employee posts":{"best":45,"top":3},"Company posts":{"best":46,"top":3},"Company funding":{"best":32,"top":3},"Company jobs":{"best":44,"top":3},"Employee search":{"best":53,"top":3},"Company search":{"best":33,"top":3},"Job search":{"best":44,"top":3},"Reverse email lookup":{"best":56,"top":3},"Post search":{"best":37,"top":3},"Post details":{"best":49,"top":3},"Job details":{"best":42,"top":3},"Employee comments":{"best":22,"top":3},"Employee reactions":{"best":16,"top":3},"Post reposts":{"best":9,"top":3},"Employee recommendations":{"best":8,"top":3},"Job lookalikes":{"best":6,"top":3},"Employee articles":{"best":5,"top":3},"Company enrichment":{"best":145,"top":3},"People search":{"best":112,"top":3},"Company discovery":{"best":131,"top":3},"Job postings":{"best":43,"top":3},"Job posting details":{"best":34,"top":3},"Person enrichment":{"best":34,"top":3},"Leadership changes":{"best":12,"top":3},"Company hierarchy":{"best":18,"top":3},"Web search":{"best":67,"top":3},"SERP":{"best":92,"top":3},"Search autocomplete":{"best":8,"top":3},"News search":{"best":58,"top":3},"Image search":{"best":33,"top":3},"Video search":{"best":25,"top":3},"Web scraping":{"best":64,"top":3},"Keyword research":{"best":13,"top":3},"Ranked keywords":{"best":10,"top":3},"Related keywords":{"best":13,"top":3},"Backlinks":{"best":9,"top":3},"Domain authority":{"best":9,"top":3},"X profile":{"best":37,"top":3},"X posts":{"best":35,"top":3},"Instagram profile":{"best":36,"top":3},"Instagram posts":{"best":33,"top":3},"TikTok profile":{"best":35,"top":3},"TikTok videos":{"best":33,"top":3},"YouTube channel":{"best":31,"top":3},"YouTube channel videos":{"best":28,"top":3},"Reddit profile":{"best":14,"top":3},"Reddit posts":{"best":15,"top":3},"Facebook page":{"best":18,"top":3},"Facebook posts":{"best":16,"top":3},"Threads profile":{"best":15,"top":3},"Threads posts":{"best":15,"top":3},"Bluesky profile":{"best":2,"top":2},"Bluesky posts":{"best":2,"top":2},"Telegram channel":{"best":3,"top":3},"Telegram channel posts":{"best":3,"top":3},"Pinterest search":{"best":5,"top":3},"Pinterest pin":{"best":4,"top":3},"Pinterest board pins":{"best":4,"top":3},"Pinterest user boards":{"best":4,"top":3},"Hacker News search":{"best":1,"top":1},"Hacker News story comments":{"best":1,"top":1},"Twitch profile":{"best":9,"top":3},"Twitch videos":{"best":7,"top":3},"Twitch clip":{"best":6,"top":3},"Kick clip":{"best":3,"top":3},"Snapchat profile":{"best":10,"top":3},"Truth Social profile":{"best":6,"top":3},"Truth Social posts":{"best":7,"top":3},"GitHub profile":{"best":3,"top":3},"GitHub repository":{"best":3,"top":3},"GitHub user repositories":{"best":3,"top":3},"Douyin profile":{"best":6,"top":3},"Douyin user videos":{"best":7,"top":3},"Douyin video":{"best":6,"top":3},"Weibo profile":{"best":4,"top":3},"Weibo user posts":{"best":4,"top":3},"Weibo post":{"best":5,"top":3},"Xiaohongshu profile":{"best":5,"top":3},"Xiaohongshu user notes":{"best":5,"top":3},"Xiaohongshu note":{"best":4,"top":3},"Zhihu profile":{"best":3,"top":3},"Zhihu question answers":{"best":2,"top":2},"Kuaishou profile":{"best":2,"top":2},"Kuaishou user videos":{"best":3,"top":3},"Kuaishou video":{"best":2,"top":2},"Bilibili user videos":{"best":3,"top":3},"Bilibili video":{"best":3,"top":3},"Facebook ads":{"best":10,"top":3},"Google ads":{"best":5,"top":3},"LinkedIn ads":{"best":4,"top":3},"TikTok ads":{"best":2,"top":2},"G2 reviews":{"best":9,"top":3},"Capterra reviews":{"best":8,"top":3},"Trustpilot reviews":{"best":16,"top":3},"Glassdoor reviews":{"best":8,"top":3},"App Store app":{"best":12,"top":3},"App Store reviews":{"best":13,"top":3},"Google Play app":{"best":12,"top":3},"Google Play reviews":{"best":12,"top":3},"Amazon product":{"best":19,"top":3},"Amazon search":{"best":20,"top":3},"Google Shopping product":{"best":7,"top":3},"Walmart product":{"best":7,"top":3},"Walmart search":{"best":7,"top":3},"eBay product":{"best":4,"top":3},"eBay search":{"best":6,"top":3},"TikTok Shop product":{"best":6,"top":3},"TikTok Shop search":{"best":5,"top":3},"Facebook Marketplace listing":{"best":4,"top":3},"Facebook Marketplace search":{"best":6,"top":3},"Zillow search":{"best":7,"top":3},"Zillow property":{"best":7,"top":3},"Redfin search":{"best":3,"top":3},"Redfin property":{"best":4,"top":3},"Realtor.com search":{"best":5,"top":3},"Realtor.com property":{"best":4,"top":3},"Google Hotels search":{"best":4,"top":3},"Google Hotels property":{"best":3,"top":3},"Booking.com search":{"best":3,"top":3},"Booking.com property":{"best":2,"top":2},"Airbnb search":{"best":4,"top":3},"Airbnb listing":{"best":4,"top":3},"Tripadvisor search":{"best":4,"top":3},"Tripadvisor reviews":{"best":4,"top":3},"CarGurus search":{"best":1,"top":1},"CarGurus listing":{"best":1,"top":1},"AutoScout24 search":{"best":2,"top":2},"mobile.de search":{"best":3,"top":3},"mobile.de listing":{"best":2,"top":2},"Copart lot":{"best":2,"top":2},"IAAI lot":{"best":2,"top":2},"AutoScout24 listing":{"best":1,"top":1},"Auto Trader UK search":{"best":1,"top":1},"Auto Trader UK listing":{"best":1,"top":1},"Bring a Trailer search":{"best":1,"top":1},"Bring a Trailer lot":{"best":1,"top":1},"VIN decoder":{"best":11,"top":3},"Current weather":{"best":35,"top":3},"Weather forecast":{"best":37,"top":3},"Air quality":{"best":27,"top":3},"App Store search":{"best":10,"top":3},"Google Play search":{"best":9,"top":3},"ChatGPT answer":{"best":8,"top":3},"Perplexity answer":{"best":6,"top":3},"Gemini answer":{"best":7,"top":3},"Bing Copilot answer":{"best":4,"top":3},"Business verification":{"best":10,"top":3}},"bestPages":{"Employee profile":["/best-linkedin-profile-api","Best LinkedIn profile API in 2026"],"Employee email":["/best-email-finder-api","Best email finder API in 2026"],"Email validation":["/best-email-verification-api","Best email verification API in 2026"],"Employee phone":["/best-phone-finder-api","Best phone finder API in 2026"],"Company profile":["/best-linkedin-company-data-api","Best LinkedIn company data API in 2026"],"Company headcount":["/best-company-headcount-api","Best company headcount API in 2026"],"Phone validation":["/best-phone-validation-api","Best phone validation API in 2026"],"Post comments":["/best-linkedin-post-comment-api","Best LinkedIn post comment API in 2026"],"Post reactions":["/best-linkedin-post-reaction-api","Best LinkedIn post reaction API in 2026"],"Employee lookalikes":["/best-similar-people-api","Best similar people API in 2026"],"Company lookalikes":["/best-similar-companies-api","Best similar companies API in 2026"],"Company technologies":["/best-tech-stack-api","Best tech stack API in 2026"],"Employee posts":["/best-linkedin-profile-post-api","Best LinkedIn profile post API in 2026"],"Company posts":["/best-linkedin-company-post-api","Best LinkedIn company post API in 2026"],"Company funding":["/best-company-funding-api","Best company funding API in 2026"],"Company jobs":["/best-company-open-jobs-api","Best company open jobs API in 2026"],"Employee search":["/best-linkedin-people-search-api","Best LinkedIn people search API in 2026"],"Company search":["/best-linkedin-company-search-api","Best LinkedIn company search API in 2026"],"Job search":["/best-linkedin-job-search-api","Best LinkedIn job search API in 2026"],"Reverse email lookup":["/best-reverse-email-lookup-api","Best reverse email lookup API in 2026"],"Post search":["/best-linkedin-post-search-api","Best LinkedIn post search API in 2026"],"Post details":["/best-linkedin-post-details-api","Best LinkedIn post details API in 2026"],"Job details":["/best-linkedin-job-details-api","Best LinkedIn job details API in 2026"],"Employee comments":["/best-linkedin-profile-comment-api","Best LinkedIn profile comment API in 2026"],"Employee reactions":["/best-linkedin-profile-reaction-api","Best LinkedIn profile reaction API in 2026"],"Post reposts":["/best-linkedin-post-repost-api","Best LinkedIn post repost API in 2026"],"Company enrichment":["/best-company-enrichment-api","Best company enrichment API in 2026"],"People search":["/best-people-search-api","Best people search API in 2026"],"Company discovery":["/best-company-discovery-api","Best company discovery API in 2026"],"Job postings":["/best-job-postings-api","Best job postings API in 2026"],"Job posting details":["/best-job-posting-details-api","Best job posting details API in 2026"],"Person enrichment":["/best-people-enrichment-api","Best people enrichment API in 2026"],"Leadership changes":["/best-leadership-change-api","Best leadership change API in 2026"],"Company hierarchy":["/best-company-hierarchy-api","Best company hierarchy API in 2026"],"Web search":["/best-web-search-api","Best web search API in 2026"],"SERP":["/best-serp-api","Best SERP API in 2026"],"Search autocomplete":["/best-search-autocomplete-api","Best search autocomplete API in 2026"],"News search":["/best-news-api","Best news API in 2026"],"Image search":["/best-image-search-api","Best image search API in 2026"],"Video search":["/best-video-search-api","Best video search API in 2026"],"Web scraping":["/best-web-scraping-api","Best web scraping API in 2026"],"Keyword research":["/best-keyword-research-api","Best keyword research API in 2026"],"Ranked keywords":["/best-ranked-keywords-api","Best ranked keywords API in 2026"],"Related keywords":["/best-related-keywords-api","Best related keywords API in 2026"],"Backlinks":["/best-backlink-api","Best backlink API in 2026"],"Domain authority":["/best-domain-authority-api","Best domain authority API in 2026"],"X profile":["/best-x-twitter-profile-api","Best X (Twitter) profile API in 2026"],"X posts":["/best-x-twitter-post-api","Best X (Twitter) post API in 2026"],"Instagram profile":["/best-instagram-profile-api","Best Instagram profile API in 2026"],"Instagram posts":["/best-instagram-post-api","Best Instagram post API in 2026"],"TikTok profile":["/best-tiktok-profile-api","Best TikTok profile API in 2026"],"TikTok videos":["/best-tiktok-video-api","Best TikTok video API in 2026"],"YouTube channel":["/best-youtube-channel-api","Best YouTube channel API in 2026"],"YouTube channel videos":["/best-youtube-channel-video-api","Best YouTube channel video API in 2026"],"Reddit profile":["/best-reddit-profile-api","Best Reddit profile API in 2026"],"Reddit posts":["/best-reddit-post-api","Best Reddit post API in 2026"],"Facebook page":["/best-facebook-page-api","Best Facebook page API in 2026"],"Facebook posts":["/best-facebook-post-api","Best Facebook post API in 2026"],"Threads profile":["/best-threads-profile-api","Best Threads profile API in 2026"],"Threads posts":["/best-threads-post-api","Best Threads post API in 2026"],"Twitch profile":["/best-twitch-profile-api","Best Twitch profile API in 2026"],"Twitch videos":["/best-twitch-video-api","Best Twitch video API in 2026"],"Twitch clip":["/best-twitch-clip-api","Best Twitch clip API in 2026"],"Snapchat profile":["/best-snapchat-profile-api","Best Snapchat profile API in 2026"],"Truth Social posts":["/best-truth-social-post-api","Best Truth Social post API in 2026"],"Facebook ads":["/best-facebook-ad-library-api","Best Facebook Ad Library API in 2026"],"G2 reviews":["/best-g2-review-api","Best G2 review API in 2026"],"Capterra reviews":["/best-capterra-review-api","Best Capterra review API in 2026"],"Trustpilot reviews":["/best-trustpilot-review-api","Best Trustpilot review API in 2026"],"Glassdoor reviews":["/best-glassdoor-review-api","Best Glassdoor review API in 2026"],"App Store reviews":["/best-app-store-review-api","Best App Store review API in 2026"],"Google Play app":["/best-google-play-api","Best Google Play API in 2026"],"Amazon product":["/best-amazon-product-api","Best Amazon product API in 2026"],"Amazon search":["/best-amazon-search-api","Best Amazon search API in 2026"],"TikTok Shop product":["/best-tiktok-shop-product-api","Best TikTok Shop product API in 2026"],"Facebook Marketplace search":["/best-facebook-marketplace-search-api","Best Facebook Marketplace search API in 2026"],"Zillow search":["/best-zillow-search-api","Best Zillow search API in 2026"],"Realtor.com search":["/best-realtor-com-search-api","Best Realtor.com search API in 2026"],"Google Hotels search":["/best-google-hotels-search-api","Best Google Hotels search API in 2026"],"Current weather":["/best-current-weather-api","Best current weather API in 2026"],"Weather forecast":["/best-weather-forecast-api","Best weather forecast API in 2026"],"Air quality":["/best-air-quality-api","Best air quality API in 2026"],"ChatGPT answer":["/best-chatgpt-scraper-api","Best ChatGPT scraper API in 2026"]},"accuratePages":{"Employee email":["/most-accurate-email-finder-api","Most accurate email finder API in 2026"],"Email validation":["/most-accurate-email-verification-api","Most accurate email verification API in 2026"],"Employee phone":["/most-accurate-phone-finder-api","Most accurate phone finder API in 2026"],"Company headcount":["/most-accurate-company-headcount-api","Most accurate company headcount API in 2026"],"Phone validation":["/most-accurate-phone-validation-api","Most accurate phone validation API in 2026"],"Reverse email lookup":["/most-accurate-reverse-email-lookup-api","Most accurate reverse email lookup API in 2026"]},"familyPages":[["/best-linkedin-api","Best LinkedIn API in 2026"],["/best-phone-api","Best phone API in 2026"],["/best-email-api","Best email API in 2026"],["/best-x-api","Best X (Twitter) API in 2026"]],"three":{"words":"air quality","plans":[["WeatherAPI.com","/air-quality-apis/weatherapi-com/free#7-monthly"],["Open-Meteo","/air-quality-apis/open-meteo/free-get-v1-air-quality-air-quality#99-monthly-api-professional-get-v1-air-quality-air-quality"],["Weatherbit","/air-quality-apis/weatherbit/free-trial-get-v2-0-forecast-airquality#495-monthly-business-get-v2-0-forecast-airquality"]]},"first":[{"provider":"Airly","api":"Air quality","website":"https://airly.org","pricingPage":"https://developer.airly.org/docs","pitch":"Effortless access to hyperlocal air quality data from 13,000+ data points, anywhere, anytime.","strengths":[],"aggregators":null,"freshness":"live","fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"Free plan, API terms § 7: \"The Client who has chosen free-of-charge Service Plan is in particular forbidden to: [...] create his/her own database using data obtained from the Database or to distribute it in any way\".","use":"Free plan, docs: \"On a free plan, API consumer is required to use our API only in non-commercial projects. When presenting data obtained from our API you should present our logo\"; API terms § 7: \"The Client who has chosen free-of-charge Service Plan is in particular forbidden to: resell the data or Database obtained within the API; make them available to third parties free-of-charge or for a fee; create his/her own database using data obtained from the Database or to distribute it in any way; use of the API, data or Database obtained within the API on any websites, platforms or mobile applications (commercial or non-commercial); use API, data or Database for any commercial purposes (directly or indirectly).\" Every plan, § 8: \"Upon these Terms of Service, following are considered as prohibited: using data on websites, portals and/or mobile applications conducting competitive activity to the Airly; [...] sharing the API-Key with third parties; suggesting any relationship between Airly and the person holding legal title to the domain, website to which the domain refers, portal or mobile application on which Airly data is used; using the data in a manipulative or deceptive manner; using data in a manner that compromises Airly’s reputation; using the data in a manner contrary to law, morality or in other unethical manner.\"","plan":"Free","who":"anyone, for non-commercial use alone","billing":"free","charged":null,"topUp":null,"pay":0,"currency":"USD","exchangeRate":1,"termMonths":null,"from":null,"graduated":null,"units":100,"unit":"request","renews":"day","expires":null,"costUnits":1,"calls":100,"monthlyCap":null,"perThousand":0,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":"hard","addons":null,"notFoundPerThousand":0,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["Get Installation by LocationID","Get nearest installations by location","Get Installation by SensorID","Get installation by id","Get measurements for installation","Get measurements for location","Get measurements from nearest installation","Get index types","Get measurement types","Get standard types"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":100,"perSecond":null,"concurrent":null,"batch":1,"minBatch":null,"answer":"in the call","latencyMs":null,"call":"Get measurements for a point on map","method":"GET","path":"/v2/measurements/point","send":"lat, lng; indexType, indexPollutant, standardType","fields":["period start","period end","PM1","PM2.5","PM10","nitrogen dioxide","ozone","carbon monoxide","sulphur dioxide","Airly CAQI","CAQI","PIJP","index level","index description","index advice","index color","standard","standard pollutant","standard limit","percent of standard limit","history","forecast"]},{"provider":"Ambee","api":"Air quality","website":"https://www.getambee.com","pricingPage":"https://www.getambee.com/pricing","pitch":"The air quality forecasts API provides predictions of air quality levels, allowing you to plan and take preventive measures against poor air conditions.","strengths":[],"aggregators":null,"freshness":null,"fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"Until the terms end: \"Upon termination of these Terms, you shall destroy and remove from all websites, applications, computers, hard drives, networks, and other storage media all copies of the Service and/or APIs\".","use":"A \"non-commercial\" license \"solely for your personal or internal business purpose\": \"we grant you a non-assignable, non-exclusive, non-commercial, revocable, non-transferable, limited license to freely access and use the Platform and Services solely for your personal or internal business purpose (as the case may be) as authorized under and in accordance with these Terms. You do not have any permission to download, copy, install, or use the Service for any other purpose without our prior written consent.\" \"You do not have the right to duplicate, distribute, creative derivative works of display, or commercially exploit our Intellectual Property, directly or indirectly, without our prior written permission.\" \"The use of our APIs to you and any of the Services may be subject to further terms and conditions, as may be released by us from time to time\".","plan":"Talk to us","who":"anyone competent to enter into a contract under applicable laws, or with the authority to bind the entity it acts for","billing":"contact","charged":null,"topUp":null,"pay":null,"currency":"USD","exchangeRate":1,"termMonths":null,"from":null,"graduated":null,"units":null,"unit":"request","renews":null,"expires":null,"costUnits":null,"calls":null,"monthlyCap":null,"perThousand":null,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":null,"addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":null,"sharesBudgetWith":null,"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":null,"resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":null,"concurrent":null,"batch":1,"minBatch":null,"answer":"in the call","latencyMs":null,"call":"Air quality, forecast 48 hours","method":"GET","path":"/v3/aq/forecast/48hrs","send":"lat, lng; aqiStandard, locale, Accept-Language header","fields":["latitude","longitude","time zone","AQI","AQI pollutant","AQI pollutant concentration","AQI category","PM2.5","PM10","ozone","nitrogen dioxide","sulfur dioxide","carbon monoxide","unix timestamp","UTC time","local time"]},{"provider":"API Ninjas","api":"Air quality","website":"https://api-ninjas.com","pricingPage":"https://api-ninjas.com/pricing","pitch":"Get air quality by city or location coordinates (latitude/longitude). Returns the air quality index (AQI) and concentrations of major pollutants.","strengths":[],"aggregators":null,"freshness":null,"fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"for as long as your paid Subscription Plan remains active: once it ends or is canceled, you must immediately cease all commercial use of the Services and Output, and you may not continue to display, use, or provide Output in your commercial applications, products, or to your clients. Data caching/storing allowed: Yes on Business, Professional and Enterprise; No on Developer and Free","use":"If you are using the Free Subscription Plan, you may use the Services and Output solely for personal, non-commercial purposes and for development, testing, or evaluation of your Customer Applications. You may NOT: Use the Services or Output in any commercial environment. Use the Services or Output in any commercial product, service, or application, whether internal or external Share, distribute, or make available any Output or content from the Services to any third party in any form [...] Commercial use of the Services or Output is permitted while your paid Subscription Plan remains active. [...] You are strictly prohibited from using any information or Output from the Services to develop, train, maintain, or operate any API, software, database, or service that competes with API Ninjas—regardless of whether it is available on our platform or elsewhere. This prohibition extends to repackaging, redistributing, or making the Output or data accessible in any way that would compete with or substitute for our Services. [...] You agree NOT to use the Services for any purpose that: [...] Resells, redistributes, or sublicenses API access without authorization Creates competing products or services using our APIs White-labels or rebrands Output as your own data source Uses the Free plan for commercial purposes Shares or transfers API Keys to unauthorized parties [...] Attribution required: Yes (Free plan)","plan":"Professional","who":"anyone 18 or over","billing":"monthly","charged":null,"topUp":null,"pay":299,"currency":"USD","exchangeRate":1,"termMonths":1,"from":null,"graduated":null,"units":10000000,"unit":"request","renews":"month","expires":null,"costUnits":1,"calls":10000000,"monthlyCap":null,"perThousand":0.0299,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":"hard","addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["283 other calls"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":null,"concurrent":null,"batch":1,"minBatch":null,"answer":"in the call","latencyMs":449,"call":null,"method":"GET","path":"/v1/airquality","send":"lat, lon; city, state, country","fields":["overall AQI","carbon monoxide concentration","carbon monoxide AQI","nitrogen dioxide concentration","nitrogen dioxide AQI","ozone concentration","ozone AQI","sulfur dioxide concentration","sulfur dioxide AQI","PM2.5 concentration","PM2.5 AQI","PM10 concentration","PM10 AQI"]},{"provider":"Azure Maps","api":"Air quality","website":"https://azure.microsoft.com/en-us/products/azure-maps","pricingPage":"https://azure.microsoft.com/en-us/pricing/details/azure-maps/","pitch":"Use to get daily air quality forecasts for the next one to seven days that include pollutant levels, potential risks and suggested precautions.","strengths":[],"aggregators":null,"freshness":null,"fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"Customer may not cache or store results delivered by the Azure Maps API for the purpose of scaling such Results (as defined below) to serve multiple users, or to circumvent any functionality in Azure Maps, including but not limited to (i) map data tiles, or (ii) information on the calculation of a path between two (2) or more points (“Route”) information (collectively the “Results”). Caching and storing Results and locations (latitude and longitude pair) or addresses that have been returned from a call to Azure Maps (“Geocode”/ ”Reverse Geocode”) are permitted where the purpose of caching is to reduce latency times of the Customer Solution. Results may not be stored for longer than: (i) the validity period indicated in returned headers; or (ii) 6 months, whichever is shorter.","use":"Customer may not use Azure Maps, or any part thereof (1) to enable turn-by-turn navigation functionality in any Customer Solution or use within an automatic or autonomous vehicle control; or (2) with a vehicle’s dashboard, or a device connected to a vehicles dashboard, systems, or sensors, except that the device may be connected to the vehicle power source for charging purposes. [...] Customer may not use Azure Maps or any part thereof to create a competing database or service, or a derived database populated wholly or partially with Customer’s content and/or content supplied or created by any third party. Customer will not use the content delivered by the Azure Maps in combination with any other third-party database, except that Customer may layer onto the content a type of content not already included within Azure Maps (such as Customer's proprietary content) or which Microsoft separately licenses to Customer. [...] Customer will not modify or create a derivative work based on Azure Maps, or any part thereof, unless expressly permitted to do so under these terms. [...] Microsoft may, in its sole discretion, limit the rate at which Azure Maps, or any portion thereof, may be called. [...] Customer may not display any Results, and/or Azure Maps Weather service results, solely as described in these Terms, on any third-party content or geographical map database. [...] Customers may not remove, obscure, mask or change any logo and/or copyright notice placed on or automatically generated by Azure Maps. Customer must display in a conspicuous manner within Customer Solution any Microsoft or third-party attribution provided by Microsoft.","plan":"<500K","who":"anyone with an Azure subscription","billing":"on-demand","charged":"monthly","topUp":null,"pay":0,"currency":"USD","exchangeRate":1,"termMonths":null,"from":1001,"graduated":true,"units":null,"unit":"request","renews":"month","expires":null,"costUnits":1,"calls":null,"monthlyCap":null,"perThousand":4.5,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":null,"addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["Get Current Conditions","Get Daily Forecast","Get Hourly Forecast","Get Current Air Quality"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":50,"concurrent":null,"batch":1,"minBatch":null,"answer":"in the call","latencyMs":null,"call":"Get Air Quality Daily Forecasts","method":"GET","path":"/weather/airQuality/forecasts/daily/json","send":"query, api-version \"1.1\"; duration, language","fields":["day","AQI","global AQI","category","category color","description","dominant pollutant"]},{"provider":"Botoi","api":"Air quality","website":"https://botoi.com","pricingPage":"https://botoi.com/pricing/","pitch":"Returns the current Air Quality Index (both US EPA and European scales) and individual pollutant concentrations for a given latitude and longitude. Pollutants include PM2.5, PM10, carbon monoxide, nitrogen dioxide, sulphur dioxide, and ozone.","strengths":[],"aggregators":null,"freshness":"live","fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"no limit","use":"By obtaining and using an API key, You agree to: Keep Your API key confidential and not share it with unauthorized parties; Not exceed the rate limits associated with Your plan tier; Not use the API for any unlawful purpose or to transmit harmful content; Not attempt to circumvent authentication, rate limiting, or other security measures; Not resell or redistribute API access without prior written consent from the Company","plan":"Business","who":"anyone 18 or older","billing":"monthly","charged":null,"topUp":null,"pay":199,"currency":"USD","exchangeRate":1,"termMonths":1,"from":null,"graduated":null,"units":1000000,"unit":"request","renews":"day","expires":"resets daily at midnight UTC","costUnits":1,"calls":1000000,"monthlyCap":null,"perThousand":0.0066,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":null,"addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["150 other calls"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":1000000,"perSecond":16.67,"concurrent":null,"batch":1,"minBatch":null,"answer":"in the call","latencyMs":null,"call":null,"method":"POST","path":"/v1/air-quality/check","send":"lat, lng","fields":["success","latitude","longitude","US AQI","European AQI","AQI category","PM2.5","PM10","carbon monoxide","nitrogen dioxide","sulphur dioxide","ozone","request ID","time taken"]},{"provider":"Foreca","api":"Air quality","website":"https://developer.foreca.com","pricingPage":"https://developer.foreca.com/pricing","pitch":"Daily air quality forecasts.","strengths":[],"aggregators":null,"freshness":null,"fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"Subject to Customer's payment of the applicable Fees, Foreca grants to Customer, for the duration of the Agreement, a limited, non-exclusive and non-transferable licence and right to use the Service and Content as described in the Service Description.","use":"Subject to Customer's payment of the applicable Fees, Foreca grants to Customer, for the duration of the Agreement, a limited, non-exclusive and non-transferable licence and right to use the Service and Content as described in the Service Description. Customer may not use or transfer the Content in any way not expressly provided for in these Terms. [...] Any Customer’s application or service incorporating Content shall prominently display the message “Powered by Foreca” or the Foreca logo (available at www.foreca.com/logo) in a legible manner. Customer shall follow Foreca's instructions regarding the use of Foreca's logo, trade name and other trademarks. Customer may not present the Service, Content or Foreca's name or logo in any manner that implies a partnership, affiliation, sponsorship or endorsement by Foreca, unless expressly authorized by these Terms.","plan":"Altocumulus","who":"anyone","billing":"monthly","charged":null,"topUp":null,"pay":319,"currency":"EUR","exchangeRate":1.1253,"termMonths":1,"from":null,"graduated":null,"units":5000000,"unit":"request","renews":"month","expires":null,"costUnits":1,"calls":5000000,"monthlyCap":null,"perThousand":0.0718,"waterfall":null,"listPerThousand":null,"overagePerThousand":0.1013,"unitsCap":"soft","addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["Point Forecasts Location search","Point Forecasts Location info","Point Forecasts Observations","Point Forecasts Current","Point Forecasts Nowcast (short)","Point Forecasts Nowcast (long)","Point Forecasts Hourly","Point Forecasts Three-hourly","Point Forecasts Daily","Air Quality Hourly","Weather Maps Tile","Marine Weather Hourly","Marine Weather Daily"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":10,"concurrent":null,"batch":null,"minBatch":null,"answer":"in the call","latencyMs":null,"call":"Daily","method":"GET","path":"/api/v1/air-quality/forecast/daily/{location}","send":"location; periods, lang","fields":["date","AQI","dominant pollutant","dominant pollutant description","carbon monoxide AQI","nitrogen dioxide AQI","ozone AQI","sulfur dioxide AQI","PM10 AQI","PM2.5 AQI"]},{"provider":"Google Maps Platform","api":"Air quality","website":"https://mapsplatform.google.com","pricingPage":"https://mapsplatform.google.com/pricing/","pitch":"The Current Conditions endpoint provides hourly air quality information in more than 100 countries, up to a 500 x 500 meters resolution. Includes over 70 local indexes and global air quality index and categories.","strengths":[],"aggregators":null,"freshness":null,"fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"Current conditions values: one hour, after which Customer must delete the cached Google Maps Content","use":"Customer may only use the data retrieved from Air Quality API in (a) air quality based routing solutions developed by Customer, and (b) Customer environmental risk indices and correlational research. [...] Customer will not export, extract, or otherwise scrape Google Maps Content for use outside the Services. For example, Customer will not: (i) pre-fetch, index, store, reshare, or rehost Google Maps Content outside the services [...] Customer will not cache Google Maps Content except as expressly permitted under the Maps Service Specific Terms. Customer will not create content based on Google Maps Content. For example, Customer will not: [...] (vii) use Google Maps Content to improve machine learning and artificial intelligence models, including to train, test, validate or fine-tune the models. Customer will not use the Services to create a product or service with features that are substantially similar to or that re-create the features of another Google product or service. Customer’s product or service must contain substantial, independent value and features beyond the Google products or services. [...] Customer will display all attribution that (i) Google provides through the Services (including branding, logos, and copyright and trademark notices); or (ii) is specified in the Maps Service Specific Terms. Customer will not modify, obscure, or delete such attribution.","plan":"Essentials","who":"anyone who accepts the Google Maps Platform Scaled Subscription Terms and Conditions","billing":"monthly","charged":null,"topUp":null,"pay":275,"currency":"USD","exchangeRate":1,"termMonths":1,"from":null,"graduated":null,"units":100000,"unit":"request","renews":"month","expires":null,"costUnits":1,"calls":100000,"monthlyCap":null,"perThousand":2.75,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":"soft","addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["Air Quality API: Get hourly forecast","Geocoding","Autocomplete Requests","Geolocation","Maps Grounding Essentials","Places API Place Details Essentials","Places UI Kit - Autocomplete per Session","Places UI Kit Query","Time Zone","Dynamic Maps","Embed (Unlimited)","Map Tiles API: 2D Map Tiles","Map Tiles API: Street View Tiles","Maps SDK (Unlimited)","Static Maps","Static Street View","Routes: Compute Route Matrix Essentials","Routes: Compute Routes Essentials","Solar API Building Insights","Weather API"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":100,"concurrent":null,"batch":1,"minBatch":null,"answer":"in the call","latencyMs":null,"call":"Get current conditions","method":"POST","path":"/v1/currentConditions:lookup","send":"location.latitude, location.longitude; extraComputations, uaqiColorPalette, customLocalAqis, universalAqi, languageCode","fields":["time","region code","AQI index code","AQI index name","AQI","AQI display","AQI color","AQI category","dominant pollutant","pollutant code","pollutant name","pollutant full name","pollutant concentration","pollutant concentration units","pollutant sources","pollutant health effects","health advice for the general population","health advice for the elderly","health advice for people with lung disease","health advice for people with heart disease","health advice for athletes","health advice for pregnant women","health advice for children"]},{"provider":"IQAir","api":"Air quality","website":"https://www.iqair.com","pricingPage":"https://www.iqair.com/air-quality-monitors/api","pitch":"Air Quality Metrics: AQI Index, PM2.5, PM10, SO2, CO, O3, and NO2 levels","strengths":[],"aggregators":null,"freshness":null,"fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"no API terms","use":"no API terms","plan":"Enterprise","who":"anyone","billing":"contact","charged":null,"topUp":null,"pay":null,"currency":"USD","exchangeRate":1,"termMonths":null,"from":null,"graduated":null,"units":null,"unit":"request","renews":null,"expires":null,"costUnits":1,"calls":null,"monthlyCap":null,"perThousand":null,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":null,"addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":null,"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":1000000,"perSecond":16.67,"concurrent":null,"batch":1,"minBatch":null,"answer":"in the call","latencyMs":null,"call":"nearest_city","method":"GET","path":"/v2/nearest_city","send":"lat, lon","fields":["city name","state name","country name","latitude","longitude","UTC time","US AQI","China AQI","main pollutant for US AQI","main pollutant for China AQI","PM2.5","PM10","ozone","nitrogen dioxide","sulfur dioxide","carbon monoxide","pollutant US AQI","pollutant China AQI","pollutant units","forecast time","forecast US AQI","forecast China AQI","forecast PM2.5","forecast PM10"]},{"provider":"Meersens","api":"Air quality","website":"https://meersens.com","pricingPage":"https://meersens.com/api/?lang=en","pitch":"Returns current information about air quality conditions for a specific location.","strengths":[],"aggregators":null,"freshness":"live","fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"no API terms","use":"no API terms","plan":"Contact us","who":"anyone","billing":"contact","charged":null,"topUp":null,"pay":null,"currency":"USD","exchangeRate":1,"termMonths":null,"from":null,"graduated":null,"units":null,"unit":"request","renews":null,"expires":null,"costUnits":null,"calls":null,"monthlyCap":null,"perThousand":null,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":null,"addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":null,"sharesBudgetWith":null,"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":null,"resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":null,"concurrent":null,"batch":1,"minBatch":null,"answer":"in the call","latencyMs":null,"call":"Air quality current conditions","method":"GET","path":"/air/current","send":"lat, lng; index_type, health_recommendations, Accept-Language header","fields":["found","time read","AQI","AQI type","AQI name","AQI category","AQI description","AQI icon","AQI color","main pollutants","PM2.5","PM10","ozone","nitrogen dioxide","sulfur dioxide","carbon monoxide","pollutant unit","pollutant confidence","AQI by pollutant","health recommendations"]},{"provider":"meteoblue","api":"Air quality","website":"https://business.meteoblue.com","pricingPage":"https://business.meteoblue.com/products/weather-apis/free-weather-api","pitch":"The Air Quality package provides forecasts of atmospheric pollutant concentrations.","strengths":[],"aggregators":null,"freshness":null,"fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"10.03. REPRODUCTION: METEOBLUE DATA, PRODUCTS or SERVICES may not be stored, reproduced, printed or sent without prior consent of METEOBLUE, except for NON-COMMERCIAL UTILISATION.","use":"5.05. COMMERCIAL LICENSE is a specific set of SERVICE TERMS agreed between CUSTOMER and METEOBLUE. METEOBLUE offers specific contractual terms for business based on their needs. Terms differing from the general terms must be agreed in written. [...] 10.04. RE-ENGINEERING: it is expressly not permitted to use METEOBLUE DATA, PRODUCTS or SERVICES to re-engineer, copy or derive service components, unless permitted in writing by METEOBLUE. [...] 9.05. CREDENTIALS: If METEOBLUE SERVICES are referenced on any WEBSITE a clearly visible reference to METEOBLUE has to be displayed close to the METEOBLUE DATA. [...] 10.07. CUSTOMERS agree to not use any of the services for any illegal, non-ethical, racist, defamatory or abusive purposes, and will not engage in any such activity on our website.","plan":"Prepaid API","who":"anyone","billing":"one-time","charged":null,"topUp":true,"pay":null,"currency":"EUR","exchangeRate":1.1253,"termMonths":null,"from":null,"graduated":null,"units":null,"unit":"credit","renews":null,"expires":"1 year","costUnits":8000,"calls":null,"monthlyCap":null,"perThousand":null,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":null,"addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["259 other calls"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":8.33,"concurrent":null,"batch":1,"minBatch":null,"answer":"in the call","latencyMs":null,"call":"airquality-1h","method":"GET","path":"/packages/airquality-1h","send":"lat, lon; forecastDays, historyDays, station, name, domain, raw, tz, timeformat, format","fields":["time","nitrogen dioxide","PM10","air quality index","PM2.5","dust concentration","grass pollen","ozone","carbon monoxide","olive pollen","birch pollen","aerosol optical depth at 550 nm","sulphur dioxide","sandstorm alert","latitude","longitude","elevation","time zone","UTC offset","model run time","model run update time","generation time"]},{"provider":"Meteomatics","api":"Air quality","website":"https://www.meteomatics.com","pricingPage":"https://www.meteomatics.com/en/pricing/","pitch":"Air quality indices for trace gases. The index returns an integer from 0 (Good) to 5 (Extremely Poor).","strengths":[],"aggregators":null,"freshness":null,"fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"\"The Right of Use is limited temporally to the duration of the Agreement concluded between Meteomatics and the Customer\" (General Terms and Conditions, 3.1.2)","use":"\"use the Services of Meteomatics solely for internal business purpose or the purpose indicated in the Agreement\" (9.1.2); \"The Customer shall not undertake any of the following actions with respect to the Services and/or Documentation of Meteomatics:\" \"adapt, reverse engineer, create, copy, modify, create any derivative work of, disassemble, decompile, re-engineer, make error corrections to the Services, or otherwise create, attempt to create, or permit, allow or assist others to create, the source code or the structural framework of the Services (this also applies to Equipment) in whole or in part;\" \"copy, modify, translate, or create derivative works based on the specifications of Meteomatics Services;\" \"cause or permit any use, sub-license, assign, novate the benefit, display, loan, publication, transfer of possession or other dissemination of the Services or Documentation, in whole or in part, to or by any third party without Meteomatics prior written consent;\" \"remove, delete, obscure, or alter any proprietary notices or labels;\" \"engage in any fraudulent, unlawful or illegal activity, violate any laws or violate the rights of any third party.\" (3.2.1)","plan":"Weather API","who":"Businesses: its Talk to an expert form asks for a \"Business e-mail\"","billing":"contact","charged":null,"topUp":null,"pay":null,"currency":"USD","exchangeRate":1,"termMonths":null,"from":null,"graduated":null,"units":null,"unit":"request","renews":null,"expires":null,"costUnits":1,"calls":null,"monthlyCap":null,"perThousand":null,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":null,"addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":null,"sharesBudgetWith":null,"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":null,"concurrent":null,"batch":10,"minBatch":null,"answer":"in the call","latencyMs":null,"call":null,"method":"GET","path":"/{validdatetime}/{parameters}/{location}/{format}","send":"validdatetime, parameters, location, format; source, calibrated, mask, ens_select, timeout, route","fields":["latitude","longitude","valid date","air quality index","PM2.5 air quality index","PM10 air quality index","nitrogen dioxide air quality index","ozone air quality index","sulfur dioxide air quality index","PM1","PM2.5","PM10","ozone","nitrogen dioxide","sulfur dioxide","carbon monoxide"]},{"provider":"Meteosource","api":"Air quality","website":"https://www.meteosource.com","pricingPage":"https://www.meteosource.com/pricing","pitch":"Air quality API provides current and forecast air pollution data and air quality index for any location in the world.","strengths":[],"aggregators":null,"freshness":null,"fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"no limit","use":"Customer terms: \"The Customer is permitted solely to use Meteosource API for reference by Your end users. Except as expressly provided herein, under no circumstances whatsoever may You transfer or permit the transfer of Meteosource API outside of your application(s).\" \"You shall not make access to the Meteosource API available to unauthorized parties.\" FAQ: \"you can use our products and data for non-commercial or commercial purposes as long as visible credit is given to Meteosource as a weather data provider in a prominent part of your application. The Free/Trial subscriptions are only available for non-commercial use.\" Free plan: \"Mention & backlink\".","plan":"Standard","who":"anyone","billing":"monthly","charged":null,"topUp":null,"pay":399,"currency":"USD","exchangeRate":1,"termMonths":1,"from":null,"graduated":null,"units":1000000,"unit":"request","renews":"day","expires":"1 day","costUnits":1,"calls":1000000,"monthlyCap":null,"perThousand":0.0133,"waterfall":null,"listPerThousand":null,"overagePerThousand":1,"unitsCap":"soft","addons":null,"notFoundPerThousand":0,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["Get weather data"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":1000000,"perSecond":11.67,"concurrent":null,"batch":1,"minBatch":null,"answer":"in the call","latencyMs":null,"call":"Get air quality data","method":"GET","path":"/air_quality","send":"lat, lon; timezone","fields":["latitude","longitude","elevation","time zone","units","forecast time","air quality index","aerosol 550","carbon monoxide","dust 550nm","dust mixing ratio","nitrogen dioxide","nitric oxide","surface ozone","total ozone","PM10","PM2.5","sulfur dioxide"]},{"provider":"Oikolab","api":"Air quality","website":"https://oikolab.com","pricingPage":"https://oikolab.com","pitch":"Use this endpoint to get air quality forecast data.","strengths":[],"aggregators":null,"freshness":null,"fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"no limit","use":"\"non-exclusive, non-sublicensable, non-transferable license, during the Term, to download and use the APIs to receive the data strictly for your internal business purposes\"; in return, \"Unless you notify us otherwise in writing, we may identify you as a customer and user of the Service on our website, mobile application and in other online or offline marketing materials and press releases\"","plan":"Business","who":"anyone","billing":"monthly","charged":null,"topUp":null,"pay":150,"currency":"USD","exchangeRate":1,"termMonths":1,"from":null,"graduated":null,"units":50000,"unit":"credit","renews":"month","expires":null,"costUnits":1,"calls":50000,"monthlyCap":null,"perThousand":3,"waterfall":null,"listPerThousand":null,"overagePerThousand":5,"unitsCap":"soft","addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["/weather"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[{"fields":["PM10"],"perThousand":3},{"fields":["carbon monoxide"],"perThousand":3},{"fields":["nitrogen monoxide"],"perThousand":3},{"fields":["nitrogen dioxide"],"perThousand":3},{"fields":["sulphur dioxide"],"perThousand":3},{"fields":["ozone"],"perThousand":3}],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":null,"concurrent":null,"batch":null,"minBatch":null,"answer":"in the call","latencyMs":null,"call":"Air quality (/airquality)","method":"GET","path":"/airquality","send":"lat, lon; param, location, location_id","fields":["PM2.5"]},{"provider":"Omkar Cloud","api":"Air quality","website":"https://www.omkar.cloud","pricingPage":"https://www.omkar.cloud/tools/air-quality-api/pricing","pitch":"Get real-time AQI and pollutant data for any location via API.","strengths":[],"aggregators":null,"freshness":"live","fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"no API terms","use":"no API terms","plan":"Scale Plan","who":"anyone aged 18 or over who is not in a country under a United States embargo or on a United States list of prohibited or restricted parties","billing":"monthly","charged":null,"topUp":null,"pay":148,"currency":"USD","exchangeRate":1,"termMonths":1,"from":null,"graduated":null,"units":75000,"unit":"request","renews":"month","expires":null,"costUnits":1,"calls":75000,"monthlyCap":null,"perThousand":1.973,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":null,"addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":[],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":null,"concurrent":null,"batch":1,"minBatch":null,"answer":"in the call","latencyMs":1013,"call":null,"method":"GET","path":"/air-quality/coords","send":"lat, lon","fields":["air quality index","PM2.5 AQI","PM2.5 concentration","PM10 AQI","PM10 concentration","ozone AQI","ozone concentration","nitrogen dioxide AQI","nitrogen dioxide concentration","sulfur dioxide AQI","sulfur dioxide concentration","carbon monoxide AQI","carbon monoxide concentration"]},{"provider":"Open-Meteo","api":"Air quality","website":"https://open-meteo.com","pricingPage":"https://open-meteo.com/en/pricing","pitch":"Get accurate forecasts for gases, particulate matter (PM), and pollen with the Air Quality API.","strengths":[],"aggregators":null,"freshness":"live","fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"While you are permitted to utilise and distribute the data, including for commercial purposes, attribution is a requirement under this licence.","use":"Free API: \"You may only use the free API services for non-commercial purposes. You accept to the CC-BY 4.0 licence\" (terms); paid plans: \"A subscription grants a commercial use licence\" (pricing page).","plan":"API Professional","who":"anyone","billing":"monthly","charged":null,"topUp":null,"pay":99,"currency":"EUR","exchangeRate":1.1253,"termMonths":1,"from":null,"graduated":null,"units":5000000,"unit":"request","renews":"month","expires":null,"costUnits":1,"calls":5000000,"monthlyCap":null,"perThousand":0.0223,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":"soft","addons":null,"notFoundPerThousand":0,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["Forecast API","Marine API","Flood API","Elevation API","Geocoding API","Historical Weather API","Climate API","Ensemble API","Historical Forecast API","Previous Model Runs API","Seasonal Forecast API","Single Runs API"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[{"fields":["UV index"],"perThousand":0.0022},{"fields":["UV index clear sky"],"perThousand":0.0022},{"fields":["ammonia"],"perThousand":0.0022},{"fields":["pollen"],"perThousand":0.0134},{"fields":["European AQI by pollutant"],"perThousand":0.0111},{"fields":["US AQI by pollutant"],"perThousand":0.0134}],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":null,"concurrent":null,"batch":null,"minBatch":null,"answer":"in the call","latencyMs":2,"call":"Air quality","method":"GET","path":"/v1/air-quality","send":"latitude, longitude, current or hourly (the variables you want); forecast_days (up to 7), past_days, domains, timezone","fields":["latitude","longitude","elevation","time zone","time zone abbreviation","UTC offset","generation time","units","time read","interval","US AQI","European AQI","PM2.5","PM10","dust","aerosol optical depth","carbon monoxide","nitrogen dioxide","sulphur dioxide","ozone"]},{"provider":"OpenWeather","api":"Air quality","website":"https://openweathermap.org","pricingPage":"https://openweathermap.org/price","pitch":"Air Pollution API provides current, forecast and historical air pollution data for any coordinates on the globe.","strengths":[],"aggregators":null,"freshness":null,"fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"no limit","use":"All automated self-service plans are provided under the ODbL (Open Database License). Commercial use is allowed. [...] Provide visible attribution to OpenWeather [...] Share-alike applies only if you: Build a reusable dataset from OpenWeather data; Restructure, combine, or enrich it; Operate your own weather dataset or API based on stored OpenWeather data; Make that dataset or API available outside your organisation [...] If such a database is distributed externally, it must be offered under the same ODbL license.","plan":"Professional","who":"anyone","billing":"monthly","charged":null,"topUp":null,"pay":370,"currency":"GBP","exchangeRate":1.3335,"termMonths":1,"from":null,"graduated":null,"units":1000000000,"unit":"request","renews":"month","expires":null,"costUnits":1,"calls":1000000000,"monthlyCap":null,"perThousand":0.00049,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":null,"addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["Current weather data","5 day / 3 hour forecast","Hourly forecast","16 day / daily forecast","Climatic forecast 30 days","Forecast air pollution data"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":500,"concurrent":null,"batch":null,"minBatch":null,"answer":"in the call","latencyMs":null,"call":"Current air pollution data","method":"GET","path":"/data/2.5/air_pollution","send":"lat, lon","fields":["latitude","longitude","date and time","air quality index","carbon monoxide","nitrogen monoxide","nitrogen dioxide","ozone","sulphur dioxide","ammonia","PM2.5","PM10"]},{"provider":"ReefAPI","api":"Air quality","website":"https://reefapi.com","pricingPage":"https://reefapi.com/pricing","pitch":"nearest-station air quality (OpenAQ v3): pollutants + computed AQI-US/EAQI-EU + station distance + measurement freshness; honest insufficient_data when no station","strengths":[],"aggregators":null,"freshness":"live","fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"no limit","use":"You are solely responsible for how you use the data you retrieve and for ensuring your use complies with all applicable laws, third-party terms, and the rights of others (including data-protection, intellectual-property, and anti-spam laws) in your jurisdiction and your users'. You will not use the Service to break the law, infringe rights, send spam, or build a competing bulk-redistribution product. [...] Don't attempt to circumvent authentication, rate limits, or credit metering; don't probe, scan, or stress the Service except your own account within posted limits. [...] Where a source requires attribution, we surface it in the response meta; honor it.","plan":"Enterprise quarterly","who":"anyone","billing":"quarterly","charged":null,"topUp":null,"pay":450,"currency":"USD","exchangeRate":1,"termMonths":3,"from":null,"graduated":null,"units":300000,"unit":"credit","renews":"month","expires":"never","costUnits":1,"calls":300000,"monthlyCap":null,"perThousand":0.5,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":"hard","addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["3,551 other calls"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":10,"concurrent":null,"batch":1,"minBatch":null,"answer":"in the call","latencyMs":2104,"call":null,"method":"POST","path":"/weather-intel/v1/air_quality","send":"lat, lon; radius_km","fields":["PM2.5","PM10","ozone","nitrogen dioxide","sulphur dioxide","carbon monoxide","pollutant unit","pollutant measured at","pollutant reading age","pollutant station","pollutant station distance","pollutant provider","US AQI","US AQI category","US AQI dominant pollutant","EU AQI","EU AQI category","nearest station distance","stations","stale readings skipped","insufficient data","source updated at","fetched at","staleness minutes","stale","confidence","attribution","disclaimer"]},{"provider":"Seniverse","api":"Air quality","website":"https://www.seniverse.com","pricingPage":"https://www.seniverse.com/buy?type=enterprise_subscription","pitch":"获取指定城市的AQI、PM2.5、PM10、一氧化碳、二氧化氮、臭氧等空气质量信息。","strengths":[],"aggregators":null,"freshness":"live","fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"no caching of its data without its authorization","use":"您无权实施包括但不限于下列行为：以任何方式对心知天气的产品和服务进行干扰、破坏、修改或施加其他影响；以任何特殊方式恶意获取心知天气数据；在未获得心知天气授权的情况下，缓存心知天气数据；在获得天气数据后，将相关数据出租、出借、复制、转载、发表、出版，擅自借助本服务发展与之有关的衍生产品、服务、插件或者向任何第三方分发、销售或再授权；利用本服务发表、传送、传播、储存违反国家法律、危害国家安全、祖国统一、社会稳定、公序良俗的内容，或任何不当的、侮辱诽谤的、淫秽的、暴力的及任何违反国家法律法规政策的内容；其他以任何不合法的方式、为任何不合法的目的、或以任何与本协议不一致的方式使用本协议提供的所有服务。 [...] 您在使用本服务过程中不得屏蔽此类广告信息；","plan":"Extra visits 10,000,000 (额外访问量)","who":"customers with a monthly or yearly data subscription (包年包月)","billing":"one-time","charged":null,"topUp":false,"pay":800,"currency":"CNY","exchangeRate":0.14956,"termMonths":null,"from":null,"graduated":null,"units":10000000,"unit":"request","renews":null,"expires":"never","costUnits":1,"calls":10000000,"monthlyCap":null,"perThousand":0.012,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":null,"addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["Weather now","Daily weather forecast","Hourly weather forecast, 24 hours","Historical weather, past 24 hours","Weather alerts","Air quality city ranking","Historical air quality, past 24 hours","Daily air quality forecast","Hourly air quality forecast","Life index","Lunar calendar, solar terms and zodiac","Vehicle plate restrictions","Hourly tide forecast","Sunrise and sunset","Moonrise, moonset and moon phase","City search"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":null,"concurrent":null,"batch":1,"minBatch":null,"answer":"in the call","latencyMs":null,"call":"Air quality now","method":"GET","path":"/v3/air/now.json","send":"location; language, scope","fields":["location ID","location name","country code","location path","time zone","UTC offset","AQI","PM2.5 concentration","PM10 concentration","sulfur dioxide concentration","nitrogen dioxide concentration","carbon monoxide concentration","ozone concentration","dominant pollutant","category","update time","monitoring station name","monitoring station latitude","monitoring station longitude"]},{"provider":"Tomorrow.io","api":"Air quality","website":"https://www.tomorrow.io","pricingPage":"https://www.tomorrow.io/weather-api/","pitch":"Understand what precautions to take with respect to pollution, meet EPA standard regulations, and plan your outdoor activity.","strengths":[],"aggregators":null,"freshness":null,"fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"\"store or otherwise collect or copy the unaltered Datafeed, unless otherwise expressly provided for in the Order or for permitted evaluation of DaaS, in which case Datafeed may only be stored for the duration of the Initial Term [...]\" (terms, Restrictions).","use":"\"Paid Solution offerings may be used for Subscriber's internal business purposes or, as specified in an Order, integrated into Subscriber proprietary commercial applications. Commercial use is strictly prohibited in the case of evaluation, proof of concept, or in connection with self-generated accounts originated on Company's website [...] The Solution may not be distributed, shared, or offered on a standalone basis\" (terms, Permitted Use); \"any portion of the Solution that incorporates and presents Datafeed shall prominently display the message \"Powered by Tomorrow.io\" in a legible manner near such data or any information derived from it\" (terms, Attribution); \"Subscriber acknowledges and agrees not to engage, directly or indirectly, or facilitate engagement by a third party, in the following prohibited activities: [...] Use the Solution to develop, or create, or permit others to develop or create, a product or service in any way similar or competitive to the Solution, as solely determined by Company; Offer any portion or all of the Solution to any third parties [...] including but not limited to reselling, licensing, renting, leasing, transferring, lending, timesharing, assigning or redistributing it or any part thereof or generating revenue thereform. [...] Use robots, crawlers and similar applications to scrape, harvest, collect or compile content or data from or through the Solution; Publish or disclose the results of any benchmark tests performed with respect to the Solution or otherwise use any testing results related to the Solution for commercial, competitive, or other purposes\" (terms, Restrictions).","plan":"Enterprise","who":"anyone","billing":"contact","charged":null,"topUp":null,"pay":null,"currency":"USD","exchangeRate":1,"termMonths":null,"from":null,"graduated":null,"units":null,"unit":"request","renews":null,"expires":null,"costUnits":null,"calls":null,"monthlyCap":null,"perThousand":null,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":null,"addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["Realtime Weather","Weather Forecast"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":null,"resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":null,"concurrent":null,"batch":1,"minBatch":null,"answer":"in the call","latencyMs":null,"call":"Retrieve Timelines","method":"POST","path":"/v4/timelines","send":"fields, Accept-Encoding header \"deflate, gzip, br\"; location, units, timesteps, startTime, endTime, timezone, dailyStartHour","fields":["timestep","start time","end time","interval start time","PM2.5","PM10","ozone","nitrogen dioxide","carbon monoxide","sulfur dioxide","China MEP AQI","China MEP primary pollutant","China MEP health concern","US AQI","US AQI primary pollutant","US AQI health concern","wildfire smoke index"]},{"provider":"Visual Crossing","api":"Air quality","website":"https://www.visualcrossing.com","pricingPage":"https://www.visualcrossing.com/weather-data-pricing/","pitch":"Visual Crossing’s Timeline Weather API provides high-quality air quality data for teams who need to track localized air pollution levels.","strengths":[],"aggregators":null,"freshness":null,"fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"no limit","use":"\"10. DATA STORAGE. The data produced by the Service Components may be stored in any database or other storage and retrieval system.\" \"13. RESALE OR COMPETING WEATHER DATA SERVICES. You may not use the Service Components or the data they produce to create, operate, or offer a weather data API, bulk weather dataset, weather data marketplace, or similar service that competes with Visual Crossing.\" \"11. DATA SHARING. [...] Raw Weather Data may never be shared or distributed publicly for download and may only be shown to the general public for viewing purposes where the data is not readily exportable, downloadable, or available through bulk export, API access, structured download, automated retrieval, or similar retrieval functionality.\" Attribution: \"Attribution for all Visual Crossing Weather Data usage is required at the Pay-as-you-go and Pro license level.\" (pricing page).","plan":"Metered","who":"anyone","billing":"on-demand","charged":"at a threshold","topUp":null,"pay":0,"currency":"USD","exchangeRate":1,"termMonths":null,"from":null,"graduated":null,"units":null,"unit":"result","renews":null,"expires":null,"costUnits":1,"calls":null,"monthlyCap":null,"perThousand":0.1,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":null,"addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["Timeline Weather API date range queries"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":null,"concurrent":"no limit","batch":5,"minBatch":null,"answer":"in the call","latencyMs":65,"call":"Timeline Weather API: air quality elements","method":"GET","path":"/VisualCrossingWebServices/rest/services/timeline/{location}","send":"location, elements \"datetime,pm1,pm2p5,pm10,o3,no2,so2,co,aqius,aqieur\"; include, unitGroup, lang, options, iconSet, timezone, maxDistance, maxStations, elevationDifference, locationNames, forecastDataset","fields":["latitude","longitude","resolved address","address","time zone","UTC offset","query cost","elevation","day","hour","US AQI","European AQI","PM1","PM2.5","PM10","ozone","nitrogen dioxide","sulphur dioxide","carbon monoxide"]},{"provider":"WAQI","api":"Air quality","website":"https://aqicn.org","pricingPage":"https://aqicn.org/api/","pitch":"The JSON API can be used for advanced programmatic integration: Access to more than 11000 station-level and 1000 city-level data","strengths":[],"aggregators":null,"freshness":"live","fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"The data can not be redistributed as cached or archived data (where data refers to the data obtained from the APIs)","use":"The data can not be sold or included in sold packages. The data can not be used in paid applications or services. The data can not be redistributed as cached or archived data. [...] Attribution to the World Air Quality Index Project as well as originating EPA is mandatory. Public usage by for-profit corporations requires explicit agreement wit the World Air Quality Index team. Public usage by non-profit organization requires prior notification (by email) to the World Air Quality Index team.","plan":"Free","who":"anyone who agrees with the Terms of Service and gives an email and a name for a token; public usage by for-profit corporations requires explicit agreement wit the World Air Quality Index team, and by non-profit organization prior notification (by email) to the World Air Quality Index team","billing":"free","charged":null,"topUp":null,"pay":0,"currency":"USD","exchangeRate":1,"termMonths":null,"from":null,"graduated":null,"units":null,"unit":"request","renews":null,"expires":null,"costUnits":0,"calls":null,"monthlyCap":null,"perThousand":0,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":null,"addons":null,"notFoundPerThousand":0,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":[],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":null,"concurrent":null,"batch":1,"minBatch":null,"answer":"in the call","latencyMs":null,"call":null,"method":"GET","path":"/feed/geo:{lat}%3B{lng}/","send":"lat, lng","fields":["overall AQI","station ID","station name","station coordinates","station URL","measurement time","measurement time zone","EPA attributions","PM2.5 AQI","PM10 AQI","nitrogen dioxide AQI","carbon monoxide AQI","sulfur dioxide AQI","ozone AQI","PM2.5 forecast","PM10 forecast","ozone forecast","UV index forecast","status"]},{"provider":"WeatherAPI.com","api":"Air quality","website":"https://www.weatherapi.com","pricingPage":"https://www.weatherapi.com/pricing","pitch":"Air quality: CO, NO2, O3, SO2, PM2.5, PM10 with US EPA and UK DEFRA index.","strengths":[],"aggregators":null,"freshness":"live","fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"You may cache API responses for performance optimisation subject to the following limits: current conditions data — maximum 60 minutes; forecast data — maximum 24 hours; historical data — no restriction. Caching beyond these limits or storing data beyond your subscription term constitutes a breach of these Terms and Conditions.","use":"You may access, view and make copies of the data in the API for your personal or commercial use, including making the data in the API available in online and/or mobile applications/services (a single API key/subscription may be used in respect of one online or mobile application/service only) [...] If you are a Free API user then for all uses of the data, you will credit WeatherAPI.com by name or brand logo as the source of the data. [...] You agree not to sell our weather data to any third party. [...] you warrant that you will not use the Services for any purpose that is unlawful or prohibited by these Terms and Conditions, including: Scraping, bulk downloading, or systematic extraction of data beyond your subscribed plan limits. Using the API in any application or service that facilitates illegal activity. Interfering with or disrupting the integrity or performance of the API infrastructure. Attempting to reverse-engineer, decompile, or derive source code from the API. Using the data in any safety-critical system as the sole data source without independent verification against official meteorological services. [...] Where you make weather data derived from the WeatherAPI.com API available to your own end users [...] you must display a clear, conspicuous, and intelligible disclaimer to those end users.","plan":"Starter","who":"anyone","billing":"monthly","charged":null,"topUp":null,"pay":7,"currency":"USD","exchangeRate":1,"termMonths":1,"from":null,"graduated":null,"units":3000000,"unit":"request","renews":"month","expires":null,"costUnits":1,"calls":3000000,"monthlyCap":null,"perThousand":0.0023,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":"hard","addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["Forecast API","History API","Alerts API","Marine API","Search/Autocomplete API","IP Lookup API","Astronomy API","Time Zone API","Sports API"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":null,"concurrent":null,"batch":1,"minBatch":null,"answer":"in the call","latencyMs":null,"call":null,"method":"GET","path":"/v1/current.json","send":"q (latitude and longitude), aqi \"yes\"; pollen, lang, current_fields","fields":["location name","region","country","latitude","longitude","time zone","local time","time read","carbon monoxide","ozone","nitrogen dioxide","sulphur dioxide","PM2.5","PM10","US EPA index","UK DEFRA index"]},{"provider":"Weatherbit","api":"Air quality","website":"https://www.weatherbit.io","pricingPage":"https://www.weatherbit.io/pricing","pitch":"Returns hourly air quality forecasts over a 72-hour window for global locations.","strengths":[],"aggregators":null,"freshness":null,"fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"Only with an active commercial license (paid API subscription): \"A paid subscription must be maintained for the full duration of storage. If you unsubscribe, any data stored must be deleted.\"","use":"Free and Trial: \"Commercial use of our Free/trial/hobbyist tier API\" is not accepted and the data is under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 license, with \"a do-follow link to Weatherbit.io\" as credit; Standard, Plus, Business and Enterprise carry a commercial license. Use of the API for any of the following \"will lead to immediate restriction of API use\": \"Use of our Free tier API to target or trigger advertising\"; \"Commercial use of our Free/trial/hobbyist tier API\"; \"Use of our API for mission critical applications. This includes any service where failure will lead to personal injury, death, or environmental damage\"; \"Using multiple accounts to circumnavigate rate limits\"; \"Use of proxy/anonymous emails to sign up for multiple accounts\"; \"Use of our API to promote illegal activities\"; \"Directing users to sign up for non-commercial account(s) to use in a commercial application\"; \"Reselling of Weatherbit data without an appropriate custom license\".","plan":"Business","who":"anyone","billing":"monthly","charged":null,"topUp":null,"pay":495,"currency":"USD","exchangeRate":1,"termMonths":1,"from":null,"graduated":null,"units":2000000,"unit":"request","renews":"day","expires":null,"costUnits":1,"calls":2000000,"monthlyCap":null,"perThousand":0.0083,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":"hard","addons":null,"notFoundPerThousand":0,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["Current Weather API","Daily Forecast API (16 day)","Hourly Forecast API (240 hour)","Minutely Forecast API (60 minute)","Current Air Quality API"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":2000000,"perSecond":150,"concurrent":null,"batch":1,"minBatch":null,"answer":"in the call","latencyMs":37,"call":"Air Quality Forecast API","method":"GET","path":"/v2.0/forecast/airquality","send":"lat, lon; hours","fields":["city name","state code","country code","latitude","longitude","time zone","unix timestamp","local time","UTC time","US AQI","carbon monoxide","sulfur dioxide","nitrogen dioxide","ozone","PM2.5","PM10"]},{"provider":"Windy","api":"Air quality","website":"https://api.windy.com","pricingPage":"https://api.windy.com/point-forecast/pricing","pitch":"cams - global air quality model","strengths":[],"aggregators":null,"freshness":null,"fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"In particular, the User may not: [...] store, extract, modify, distribute, use the weather data or other content of the Services, create any weather works or databases derived therefrom, or use other means than the weather forecasting functions of the Services permitted by this Agreement;","use":"Trial Version: \"The Trial Version is intended for development purposes only and the User is not allowed to use it for production, i.e. to integrate it into the User Application.\" [...] \"The User may integrate the Services into their User Application only on the condition that such User Application creates a significant added value for its users and maintains good faith and fair dealing.\" [...] \"The User is not allowed to create User Applications that would aim to replicate the Services or other services of the Provider.\" [...] \"Any individuals or entities that are or aim to be direct competition to the Provider with respect to the Services or other services of the Provider may not become Users and are prohibited from using the Services.\" [...] \"The User is not authorized to provide access to the Services to any third party. Redistribution of any part of the API or the included data to any third party is forbidden.\" [...] \"The User must always state the source of the weather data in the User Applications. The publication of the following text “Contains data from the Windy database” [...] is deemed to be the indication of the source of the weather data.\" [...] \"The use of the Restricted Models (ECMWF), where available, is limited only to the Private Application and Users are not authorized to pass the Services on to any third party, or use them to generate Value Added Services.\"","plan":"Professional","who":"anyone not in direct competition with Windy","billing":"yearly","charged":null,"topUp":null,"pay":990,"currency":"EUR","exchangeRate":1.1253,"termMonths":12,"from":null,"graduated":null,"units":null,"unit":"request","renews":null,"expires":null,"costUnits":0,"calls":null,"monthlyCap":300000,"perThousand":0.3095,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":null,"addons":null,"notFoundPerThousand":0,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":[],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":10000,"perSecond":null,"concurrent":null,"batch":1,"minBatch":null,"answer":"in the call","latencyMs":null,"call":"Point Forecast, air quality models","method":"POST","path":"/api/point-forecast/v2","send":"lat, lon, model one of \"cams\" or \"camsEu\", parameters \"aqi\", \"so2sm\", \"dustsm\", \"cosc\", \"go3\", \"no2\", \"pm10\", \"pm2p5\", \"pollenAlder\", \"pollenBirch\", \"pollenGrass\", \"pollenMugwort\", \"pollenOlive\", \"pollenRagweed\"; levels","fields":["forecast time","units","AQI","PM2.5","PM10","ozone","nitrogen dioxide","sulfur dioxide","carbon monoxide","dust","alder pollen","birch pollen","grass pollen","mugwort pollen","olive pollen","ragweed pollen"]},{"provider":"World Weather Online","api":"Air quality","website":"https://www.worldweatheronline.com","pricingPage":"https://www.worldweatheronline.com/weather-api/api/pricing.aspx","pitch":"Fetch weather data for up to 10 locations in a single HTTP POST request — available for the Local Weather and Marine Weather APIs.","strengths":[],"aggregators":null,"freshness":null,"fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"You may cache API responses for performance optimisation subject to the following limits: current conditions data — maximum 60 minutes; forecast data — maximum 24 hours; historical data — no restriction. Caching beyond these limits or storing data beyond your subscription term constitutes a breach of these Terms and Conditions.","use":"WorldWeatherOnline grants you a limited, non-exclusive, non-transferable right to access and use the Weather API services for your own internal business or personal purposes, subject to these Terms and Conditions and your selected subscription plan. Free API access is permitted for both commercial and non-commercial use within the stated request limits. Free API users must credit WorldWeatherOnline by name or brand logo as the source of data in all public displays. [...] You may not transfer, sublicense, resell, or redistribute the API service or raw data feeds to any third party without prior written consent from WorldWeatherOnline. Any use of the API beyond the scope of your subscription plan — including exceeding request limits or accessing endpoints not included in your tier — is prohibited and may result in account suspension. Attribution required for public display of weather data [...] Where you make weather data derived from the WorldWeatherOnline API available to your own end users — whether through a website, mobile application, API, dashboard, or any other channel — you must display a clear, conspicuous disclaimer to those end users.","plan":"Pro","who":"anyone aged 16 or over","billing":"monthly","charged":null,"topUp":null,"pay":1,"currency":"USD","exchangeRate":1,"termMonths":1,"from":null,"graduated":null,"units":500,"unit":"request","renews":"day","expires":null,"costUnits":1,"calls":500,"monthlyCap":null,"perThousand":0.0667,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":null,"addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["Local History API","Marine Weather API","Marine History API","Ski Weather API","Search API","Astronomy API","Time Zone API","Local Weather API"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"result","resultsPerPage":null,"resultsCap":null,"perDay":500,"perSecond":null,"concurrent":null,"batch":10,"minBatch":null,"answer":"in the call","latencyMs":null,"call":"Bulk API","method":"POST","path":"/premium/v1/weather.ashx","send":"q, num_of_days, aqi \"yes\", Content-Type header \"multipart/form-data\"; date, tp, fx, cc, fx24, extra, includelocation, showlocaltime, showmap, lang, date_format","fields":["time read","day","hour","US EPA index","UK DEFRA index","PM2.5 concentration","PM10 concentration","ozone concentration","nitrogen dioxide concentration","sulfur dioxide concentration","carbon monoxide concentration","area name","country","region","latitude","longitude"]},{"provider":"Xweather","api":"Air quality","website":"https://www.xweather.com","pricingPage":"https://www.xweather.com/pricing/weather-api-pay-as-you-go","pitch":"The air quality endpoint provides current air quality information for locations globally.","strengths":[],"aggregators":null,"freshness":"live","fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"no API terms","use":"Developer trial: \"Xweather's free developer trial is intended solely for testing Xweather's products and services and is not intended for commercial use.\"","plan":"Pay-as-you-go","who":"anyone in the US and Canada","billing":"on-demand","charged":"monthly","topUp":null,"pay":0,"currency":"USD","exchangeRate":1,"termMonths":null,"from":3001,"graduated":true,"units":null,"unit":"credit","renews":"month","expires":null,"costUnits":5,"calls":null,"monthlyCap":null,"perThousand":3,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":null,"addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["64 other calls"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":null,"concurrent":null,"batch":1,"minBatch":null,"answer":"in the call","latencyMs":null,"call":null,"method":"GET","path":"/airquality/{id}","send":"id; p, filter, fields, plimit, pskip, psort, lang","fields":["station ID","city name","state code","country code","latitude","longitude","time zone","unix timestamp","date and time","AQI","AQI category","AQI color","AQI calculation method","dominant pollutant","air quality health index","air quality health index category","air quality health index color","carbon monoxide","nitrogen dioxide","ozone","sulfur dioxide","PM1","PM2.5","PM10","pollutant name","pollutant concentration in parts per billion","pollutant concentration in micrograms per cubic meter","pollutant AQI","pollutant category","pollutant color","pollutant calculation method","data sources","station IDs"]},{"provider":"Yandex Weather","api":"Air quality","website":"https://yandex.com/dev/weather/","pricingPage":"https://yandex.ru/dev/weather/doc/ru/concepts/pricing","pitch":"Air quality index (AQI).","strengths":[],"aggregators":null,"freshness":null,"fieldFreshness":null,"history":null,"countries":null,"fullFamilyTree":null,"checks":null,"searchesIn":null,"keep":"1 week, and all stored Information deleted within 3 business days of the contract's end (\"Заказчик обязан проверять актуальность Информации, используемой на Ресурсах, не реже 1 (одного) раза в неделю, а также обязан незамедлительно удалять ту из сохраненной Информации, которая более не содержится на Платформе\" (3.6.8); \"В течение 3 (трех) рабочих дней после прекращения Договора по любому основанию удалить всю сохраненную Информацию с ресурсов Заказчика, со всех компьютеров, серверов и оборудования Заказчика, а также письменно подтвердить такое удаление по запросу Яндекса\" (3.6.13))","use":"\"Если иное не предусмотрено соответствующим Тарифом доступа при оказании Услуг Заказчик обязуется: Использовать последнюю версию обновления Платформы, а функции Платформы только в целях доступа к Информации для использования на ресурсах Заказчика. Заказчик имеет право обрабатывать полученную Информацию исключительно для отображения их посредством Платформы.\" (3.6.5); \"Если иное не предусмотрено соответствующим Тарифом доступа при оказании Услуг Заказчик обязуется: Не удалять, не изменять порядок или сортировку, не скрывать и/или не модифицировать Информацию, а также любую информацию, доступную на Платформе или полученных данных, включая, но не ограничиваясь, рекламно-информационные материалы, товарные знаки, логотипы, ссылки или иные указания на правообладателей, а также любые другие уведомления и/или информацию, доступные на Платформе вместе с Информацией.\" (3.6.6); \"Если иное не предусмотрено соответствующим Тарифом доступа при оказании Услуг Заказчик обязуется: Не предоставлять и/или не реализовывать Информацию самостоятельно в коммерческих и/или некоммерческих целях третьим лицам, за исключением предоставления к ней доступа Конечных пользователей, без письменного согласия Яндекса, оформленного в виде дополнительного соглашения к Договору или в ином, согласованным Сторонами виде.\" (3.6.7); \"Если иное не предусмотрено соответствующим Тарифом доступа при оказании Услуг Заказчик обязуется: Не извлекать Информацию из Платформы за пределами возможностей, предоставленных Платформой, изменять содержание и вид Информации в процессе ее использования на Ресурсах, а также копировать и/или сохранять Информацию из Платформы для любых целей, кроме их использования на Ресурсах Заказчика.\" (3.6.8); \"Если иное не предусмотрено соответствующим Тарифом доступа при оказании Услуг Заказчик обязуется: При любом использовании Информации соблюдать правила и требования, указанные в руководстве (гайдлайне), размещенном по следующей ссылке – http://download.cdn.yandex.net/probki/Guide_weather_full.pdf, в том числе, но не ограничиваясь сказанным, указывать ссылку на источник Информации в указанном в гайдлайне виде.\" (3.6.10); \"Если иное не предусмотрено соответствующим Тарифом доступа при оказании Услуг Заказчик обязуется: Любые макеты материалов, содержащих Информацию или ее часть и которые отличаются от установленных в гайдлайне требований, перед размещением таких материалов на Ресурсах подлежат предварительному согласованию с Яндексом по электронной почте с использованием следующего адреса электронной почты Яндекса - yandexmedia@yandex-team.ru\" (3.6.11); \"Если погодные данные будут в открытом доступе (доступны третьим лицам), необходимо соблюдать правила брендирования. В противном случае сервис оставляет за собой право ограничить доступ к получаемым данным.\" (pricing page)","plan":"Extended","who":"new customers only, by a contract on the offer; the offer is addressed to legal entities and fully capable individuals who are Residents (Russian citizens or foreign nationals with a Russian residence permit; legal entities created under Russian law and their branches abroad)","billing":"monthly","charged":null,"topUp":null,"pay":450000,"currency":"RUB","exchangeRate":0.011939,"termMonths":1,"from":null,"graduated":null,"units":1000000,"unit":"request","renews":"month","expires":null,"costUnits":1,"calls":1000000,"monthlyCap":null,"perThousand":5.3726,"waterfall":null,"listPerThousand":null,"overagePerThousand":null,"unitsCap":null,"addons":null,"notFoundPerThousand":null,"catchAllPerThousand":null,"bounceRefund":null,"repeatFree":null,"alsoPaysFor":[],"sharesBudgetWith":["Weather for now","Weather forecast"],"startPerCall":null,"startPerCallMax":null,"monthlyFee":null,"monthlyFeePer":null,"extras":[],"per":"call","resultsPerPage":null,"resultsCap":null,"perDay":null,"perSecond":100,"concurrent":null,"batch":null,"minBatch":null,"answer":"in the call","latencyMs":null,"call":null,"method":"POST","path":"/graphql/query","send":"request.lat, request.lon, query, Content-Type header \"application/json\"","fields":["AQI","carbon monoxide concentration","nitrogen dioxide concentration","ozone concentration","PM10 concentration","PM2.5 concentration","sulfur dioxide concentration"]}],"total":254,"checked":["2026-10-30","2026-10-31"],"freshness":["Live","Within an hour","Within a day","Within a week","Within a month","Within a year","Stored, age unknown"],"providers":[{"label":"A to I","kids":[{"label":"Airly","value":"Airly on its own site"},{"label":"Ambee","value":"Ambee on its own site"},{"label":"API Ninjas","value":"API Ninjas on its own site"},{"label":"Azure Maps","value":"Azure Maps on its own site"},{"label":"Botoi","value":"Botoi on its own site"},{"label":"Foreca","value":"Foreca on its own site"},{"label":"Google Maps Platform","value":"Google Maps Platform on its own site"},{"label":"IQAir","value":"IQAir on its own site"}],"range":true},{"label":"M to S","kids":[{"label":"Meersens","value":"Meersens on its own site"},{"label":"meteoblue","value":"meteoblue on its own site"},{"label":"Meteomatics","value":"Meteomatics on its own site"},{"label":"Meteosource","value":"Meteosource on its own site"},{"label":"Oikolab","value":"Oikolab on its own site"},{"label":"Omkar Cloud","value":"Omkar Cloud on its own site"},{"label":"Open-Meteo","value":"Open-Meteo on its own site"},{"label":"OpenWeather","value":"OpenWeather on its own site"},{"label":"ReefAPI","value":"ReefAPI on its own site"},{"label":"Seniverse","value":"Seniverse on its own site"}],"range":true},{"label":"T to Y","kids":[{"label":"Tomorrow.io","value":"Tomorrow.io on its own site"},{"label":"Visual Crossing","value":"Visual Crossing on its own site"},{"label":"WAQI","value":"WAQI on its own site"},{"label":"WeatherAPI.com","value":"WeatherAPI.com on its own site"},{"label":"Weatherbit","value":"Weatherbit on its own site"},{"label":"Windy","value":"Windy on its own site"},{"label":"World Weather Online","value":"World Weather Online on its own site"},{"label":"Xweather","value":"Xweather on its own site"},{"label":"Yandex Weather","value":"Yandex Weather on its own site"}],"range":true}],"at":[0,4,9,16,23,32,58,65,71,75,87,91,94,99,104,124,136,156,190,192,195,197,234,241,243,248,251],"fields":{"Air quality":["PM2.5","carbon monoxide","nitrogen dioxide","PM10","ozone","latitude","longitude","AQI","sulfur dioxide","time zone","sulphur dioxide","US AQI","air quality index","AQI category","carbon monoxide concentration","dominant pollutant","nitrogen dioxide concentration","ozone concentration","PM10 concentration","PM2.5 concentration","sulfur dioxide concentration","carbon monoxide AQI","elevation","nitrogen dioxide AQI","ozone AQI","PM1","PM10 AQI","PM2.5 AQI","sulfur dioxide AQI","time read","UTC offset","AQI color","city name","country code","day","European AQI","forecast time","local time","units","unix timestamp","UTC time","birch pollen","category","country","date and time","dust","generation time","grass pollen","hour","location name","olive pollen","overall AQI","pollutant name","pollutant unit","region","state code","station ID","time","UK DEFRA index","US EPA index","address","aerosol 550","aerosol optical depth","aerosol optical depth at 550 nm","air quality health index","air quality health index category","air quality health index color","Airly CAQI","alder pollen","ammonia","AQI by pollutant","AQI calculation method","AQI description","AQI display","AQI icon","AQI index code","AQI index name","AQI name","AQI pollutant","AQI pollutant concentration","AQI type","area name","attribution","CAQI","category color","China AQI","China MEP AQI","China MEP health concern","China MEP primary pollutant","confidence","country name","data sources","date","description","disclaimer","dominant pollutant description","dust 550nm","dust concentration","dust mixing ratio","end time","EPA attributions","EU AQI","EU AQI category","fetched at","forecast","forecast China AQI","forecast PM10","forecast PM2.5","forecast US AQI","found","global AQI","health advice for athletes","health advice for children","health advice for people with heart disease","health advice for people with lung disease","health advice for pregnant women","health advice for the elderly","health advice for the general population","health recommendations","history","index advice","index color","index description","index level","insufficient data","interval","interval start time","location ID","location path","main pollutant for China AQI","main pollutant for US AQI","main pollutants","measurement time","measurement time zone","model run time","model run update time","monitoring station latitude","monitoring station longitude","monitoring station name","mugwort pollen","nearest station distance","nitric oxide","nitrogen dioxide air quality index","nitrogen monoxide","ozone air quality index","ozone forecast","percent of standard limit","period end","period start","PIJP","PM10 air quality index","PM10 forecast","PM2.5 air quality index","PM2.5 forecast","pollutant AQI","pollutant calculation method","pollutant category","pollutant China AQI","pollutant code","pollutant color","pollutant concentration","pollutant concentration in micrograms per cubic meter","pollutant concentration in parts per billion","pollutant concentration units","pollutant confidence","pollutant full name","pollutant health effects","pollutant measured at","pollutant provider","pollutant reading age","pollutant sources","pollutant station","pollutant station distance","pollutant units","pollutant US AQI","query cost","ragweed pollen","region code","request ID","resolved address","sandstorm alert","source updated at","stale","stale readings skipped","staleness minutes","standard","standard limit","standard pollutant","start time","state name","station coordinates","station IDs","station name","station URL","stations","status","success","sulfur dioxide air quality index","surface ozone","time taken","time zone abbreviation","timestep","total ozone","update time","US AQI category","US AQI dominant pollutant","US AQI health concern","US AQI primary pollutant","UV index forecast","valid date","wildfire smoke index"]},"same":["api","strengths","aggregators","waterfall","repeatFree","resultsCap","startPerCall","monthlyFee","addons","catchAllPerThousand","bounceRefund","history","countries","fullFamilyTree","checks","searchesIn","answer"],"facets":["defaults","provider","price","fields","billing","who","freshness","use","paysFor"],"ties":{"Air quality":{"tied":["Airly, free","Ambee, contact us","Ambee, contact us, Talk to us","Azure Maps, pay as you go","Azure Maps, pay as you go, <500K","Foreca, €319 monthly","Foreca, €319 monthly, Altocumulus","Google Maps Platform, $275 monthly","Google Maps Platform, $275 monthly, Essentials","IQAir, contact us","IQAir, contact us, Enterprise","Meersens, contact us","Open-Meteo, €99 monthly","Open-Meteo, €99 monthly, API Professional","Open-Meteo, €99 monthly, API Professional, GET /v1/air-quality","Open-Meteo, €99 monthly, API Professional, GET /v1/air-quality, 5,000,000 requests a month","OpenWeather, £370 monthly","OpenWeather, £370 monthly, Professional","Seniverse, CNY 800 pack","Seniverse, CNY 800 pack, Extra visits 10,000,000 (额外访问量)","Weatherbit, $495 monthly","Weatherbit, $495 monthly, Business","World Weather Online, $1 monthly","World Weather Online, $1 monthly, Pro","meteoblue, top-up","meteoblue, top-up, Prepaid API"],"movedPages":{},"canonicals":{"Ambee":"free-15-day-free-trial-get-v3-aq-forecast-48hrs","API Ninjas":"free","Azure Maps":"free-get-weather-airquality-forecasts-daily-json","Botoi":"free","Foreca":"free-30-day-free-trial-get-api-v1-air-quality-forecast-daily-location","Google Maps Platform":"free-usage-cap-post-v1-currentconditions-lookup","IQAir":"free","Meersens":"free-trial-get-air-current","meteoblue":"free-api-get-packages-airquality-3h","Meteosource":"29-monthly","Oikolab":"pay-as-you-go","Omkar Cloud":"free","Open-Meteo":"free-get-v1-air-quality-air-quality","OpenWeather":"free-get-data-2-5-air-pollution","ReefAPI":"free","Seniverse":"free-trial-get-v3-air-now-json","Visual Crossing":"free","WeatherAPI.com":"free","Weatherbit":"free-trial-get-v2-0-forecast-airquality","Windy":"free","World Weather Online":"free","Xweather":"free","Yandex Weather":"450000-monthly"}}},"shared":[],"notes":{"name":"The sheet's first column gives each row's name. No two rows on the sheet share a name. The name starts with the provider, then the plan's price. Some names: \"API Builderz, $50 monthly\", \"HarvestAPI, $280 pack\", \"Crawlbase, pay as you go\", \"Bright Data, top-up\" (a prepaid balance of any amount), \"AnyAPI, top-up from $10\" (a balance you top up by $10 or more), \"free\" or \"contact us\". Two plans with the same price also get the plan's name. We drop any words in the plan's name that the price already gives. If two rows share a name after that, we add the call's method and path to each name. When two names still match, we add the plan's units. When they still match after that, we add the call's name. The sheet's own CSV and JSON files have no name column. datacircle.json and datacircle.csv have a name column with the same names as the sheets.","api":"This column names each row's API. Each API has a sheet in the GTM APIs list. Most sheets share the API's name. For the rest, we give the sheet's name after the API. \"Employee profile\", on the LinkedIn profiles sheet, returns a person's LinkedIn profile. \"Employee email\", on the Find email sheet, finds a person's work email. \"Email validation\", on the Validate email sheet, checks whether an email address takes mail. \"Employee phone\", on the Find phone sheet, finds a person's phone number. \"Company profile\", on the LinkedIn company profiles sheet, returns a company's LinkedIn page. \"Company headcount\" counts a company's staff. \"Phone validation\", on the Validate phone sheet, checks whether a phone number is valid. \"Post comments\", on the LinkedIn post comments sheet, returns the comments on a LinkedIn post. \"Post reactions\", on the LinkedIn post reactions sheet, returns the reactions to a LinkedIn post, each with the person who reacted. \"Employee lookalikes\", on the Similar people sheet, returns people similar to the person you send. \"Company lookalikes\", on the Similar companies sheet, returns companies similar to the company you send. \"Company technologies\" returns the tools a company uses. \"Company job count\" counts the jobs a company has open on LinkedIn. \"Employee posts\", on the LinkedIn person posts sheet, returns a person's LinkedIn posts. \"Company posts\", on the LinkedIn company posts sheet, returns a company's LinkedIn posts. \"Company funding\" returns a company's funding rounds. \"Company jobs\", on the Company open jobs sheet, returns the jobs a company has open. \"Employee search\", on the LinkedIn people search sheet, finds people by job title, company and place. \"Company search\", on the LinkedIn company search sheet, finds companies by industry, size and place. \"Job search\", on the LinkedIn job search sheet, finds jobs by title, company and place. \"Reverse email lookup\" finds the person behind an email address. \"Post search\", on the LinkedIn post search sheet, finds posts by keyword. \"Post details\", on the LinkedIn post details sheet, returns a post from the post's URL or ID. \"Job details\", on the LinkedIn job details sheet, returns a job from the job's URL or ID. \"Employee comments\", on the LinkedIn person comments sheet, returns the comments a person left on posts. \"Employee reactions\", on the LinkedIn person reactions sheet, returns the posts a person reacted to. \"Post reposts\", on the LinkedIn post reposts sheet, returns the people who reposted a LinkedIn post. \"Employee recommendations\", on the LinkedIn person recommendations sheet, returns the recommendations on a person's LinkedIn profile. \"Job lookalikes\", on the Similar jobs sheet, returns jobs similar to the job you send. \"Employee articles\", on the LinkedIn person articles sheet, returns a person's LinkedIn articles. \"Company enrichment\" returns a company's profile from each seller's own database. \"People search\" finds people in each seller's own database. \"Company discovery\" finds companies in each seller's own database. \"Job postings\" finds job postings in each seller's own database. \"Job posting details\" returns a job posting from the posting's ID. \"Person enrichment\" returns a person's profile. \"Leadership changes\" returns the new hires, promotions and departures in a company's senior roles. \"Company hierarchy\" returns a company's parent companies and subsidiaries. \"Web search\" returns the web pages that match a query. \"SERP\" returns a search engine's results page as data. \"News search\" returns the news articles that match a query. \"Image search\" returns the images a search engine finds for a query, in the order the engine ranks them. \"Video search\" returns the videos a search engine finds for a query, in the order the engine ranks them. \"Search autocomplete\" returns the searches a search engine suggests as you type a query. \"Web scraping\" returns a page's content from the page's URL. \"Keyword research\" returns a keyword's search volume, cost per click and competition. \"Ranked keywords\" returns the keywords a domain ranks for in Google, with the domain's position and traffic for each keyword. \"Related keywords\" returns keywords like the keyword you send, with the search volume of each. \"Backlinks\" returns the links that point to a domain. \"Domain authority\" returns a domain's authority score and the number of links to the domain. \"X profile\" returns an X (Twitter) account's profile from the account's handle. \"X posts\" returns an X account's posts. \"Instagram profile\" returns an Instagram account's profile. \"Instagram posts\" returns an Instagram account's posts. \"TikTok profile\" returns a TikTok account's profile. \"TikTok videos\" returns a TikTok account's videos. \"YouTube channel\" returns a YouTube channel's name, subscribers and description. \"YouTube channel videos\" returns a YouTube channel's videos. \"Reddit profile\" returns a Reddit account's profile. \"Reddit posts\" returns a Reddit account's posts. \"Facebook page\" returns a Facebook page's details from the page's URL. \"Facebook posts\" returns a Facebook page's posts. \"Threads profile\" returns a Threads account's profile. \"Threads posts\" returns a Threads account's posts. \"Bluesky profile\" returns a Bluesky account's profile. \"Bluesky posts\" returns a Bluesky account's posts. \"Telegram channel\" returns a Telegram channel's details. \"Telegram channel posts\" returns a Telegram channel's posts. \"Pinterest search\" returns the pins Pinterest finds for a query. \"Pinterest pin\" returns a Pinterest pin's details. \"Pinterest board pins\" returns the pins on a Pinterest board. \"Pinterest user boards\" returns a Pinterest account's boards. \"Hacker News search\" returns the Hacker News stories for a query. \"Hacker News story comments\" returns the comments on a Hacker News story. \"Twitch profile\" returns a Twitch channel's profile. \"Twitch videos\" returns a Twitch channel's videos. \"Twitch clip\" returns a Twitch clip's details. \"Kick clip\" returns a Kick clip's details. \"Snapchat profile\" returns a Snapchat account's profile. \"Truth Social profile\" returns a Truth Social account's profile. \"Truth Social posts\" returns a Truth Social account's posts. \"GitHub profile\" returns a GitHub account's profile. \"GitHub repository\" returns a GitHub repository's details. \"GitHub user repositories\" returns a GitHub account's repositories. \"Douyin profile\" returns a Douyin account's profile. \"Douyin user videos\" returns a Douyin account's videos. \"Douyin video\" returns a Douyin video's details. \"Weibo profile\" returns a Weibo account's profile. \"Weibo user posts\" returns a Weibo account's posts. \"Weibo post\" returns a Weibo post's details. \"Xiaohongshu profile\" returns a Xiaohongshu (RedNote) account's profile. \"Xiaohongshu user notes\" returns a Xiaohongshu account's notes. \"Xiaohongshu note\" returns a Xiaohongshu note's details. \"Zhihu profile\" returns a Zhihu account's profile. \"Zhihu question answers\" returns the answers to a Zhihu question. \"Kuaishou profile\" returns a Kuaishou account's profile. \"Kuaishou user videos\" returns a Kuaishou account's videos. \"Kuaishou video\" returns a Kuaishou video's details. \"Bilibili user videos\" returns a Bilibili account's videos. \"Bilibili video\" returns a Bilibili video's details. \"Facebook ads\" returns a company's ads from Meta's Ad Library. \"Google ads\" returns a company's ads from Google's Ads Transparency Center. \"LinkedIn ads\" returns a company's ads from LinkedIn's Ad Library. \"TikTok ads\" returns a company's TikTok ads. \"G2 reviews\" returns a software product's reviews on G2. \"Capterra reviews\" returns a software product's reviews on Capterra. \"Trustpilot reviews\" returns a company's reviews on Trustpilot. \"Glassdoor reviews\" returns a company's reviews on Glassdoor, written by people who work or worked there. \"App Store app\" returns an app's listing on the App Store from the app's App Store ID. \"App Store reviews\" returns an app's reviews on the App Store. \"Google Play app\" returns an app's listing on Google Play from the app's package name. \"Google Play reviews\" returns an app's reviews on Google Play. \"Amazon product\" returns a product's listing on Amazon from the product's ASIN. \"Amazon search\" returns the products Amazon finds for a query, in the order Amazon ranks them. \"Google Shopping product\" returns a product's offers on Google Shopping from the product's Google Shopping ID. \"Walmart product\" returns the Walmart listing for a Walmart ID. \"Walmart search\" returns the products Walmart finds for a query, in the order Walmart ranks them. \"eBay product\" returns the eBay listing for a listing ID. \"eBay search\" returns the listings eBay finds for a query, in the order eBay ranks them. \"TikTok Shop product\" returns the listing at a TikTok Shop product link. \"TikTok Shop search\" returns the products TikTok Shop finds for a query, in the order TikTok Shop ranks them. \"Facebook Marketplace listing\" returns one listing from the listing's link or ID. \"Facebook Marketplace search\" returns the listings Facebook Marketplace shows for a search term in a city. \"Zillow search\" returns the homes Zillow lists in a place, in the order Zillow ranks them. \"Zillow property\" returns a home's Zillow listing from the home's Zillow URL. \"Redfin search\" returns the homes Redfin lists in a ZIP code, in the order Redfin ranks them. \"Redfin property\" returns a home's Redfin listing from the home's Redfin URL. \"Realtor.com search\" returns the homes Realtor.com lists in a place, in the order Realtor.com ranks them. \"Realtor.com property\" returns a home's Realtor.com listing from the home's Realtor.com ID. \"Google Hotels search\" returns the hotels and rentals Google Hotels lists in a place for your dates. Each one has a price for a night and for the stay. \"Google Hotels property\" returns a hotel's page for your dates when you send the hotel's token from a Google Hotels search. The page has the hotel's price on each booking site. \"Booking.com search\" returns the stays Booking.com lists in a place for your dates, each with a price for the stay. \"Booking.com property\" returns a stay's Booking.com page for your dates from the stay's Booking.com URL. \"Airbnb search\" returns the stays Airbnb lists in a place for your dates, each with a price for the stay. \"Airbnb listing\" returns a stay's Airbnb listing from the listing's Airbnb URL, with no price. \"Tripadvisor search\" returns the places Tripadvisor finds for a name you send. \"Tripadvisor reviews\" returns a place's reviews on Tripadvisor from the place's Tripadvisor URL. \"CarGurus search\" returns the cars for sale on CarGurus for a make and model near a ZIP code you send. Each car comes with the asking price and CarGurus's deal rating. \"CarGurus listing\" returns a car's CarGurus listing from the listing's ID. \"AutoScout24 search\" returns the cars AutoScout24 lists for a make and model you send. \"mobile.de search\" returns the cars mobile.de lists for a make and model you send. \"mobile.de listing\" returns a car's mobile.de listing from the listing's ID or URL. \"Copart lot\" returns a car up for auction on Copart from the lot's number, with the damage and the sale date. \"IAAI lot\" returns a car up for auction on IAAI from the lot's number, with the damage and the sale date. \"AutoScout24 listing\" returns a car's AutoScout24 listing from the listing's ID or URL. \"Auto Trader UK search\" returns the cars Auto Trader UK lists for a make and model you send. \"Auto Trader UK listing\" returns a car's Auto Trader UK listing from the listing's ID or URL. \"Bring a Trailer search\" returns the auctions Bring a Trailer has closed for a query you send, with what each car sold for. \"Bring a Trailer lot\" returns a car's auction on Bring a Trailer from the lot's listing ID or URL. \"VIN decoder\" returns a vehicle's make, model, year and specs from the VIN you send. \"Current weather\" returns the weather now at the latitude and longitude you send. You get temperature, humidity, wind, pressure and conditions, with the unit of each. \"Weather forecast\" returns the forecast for the latitude and longitude you send, hour by hour or day by day. \"Air quality\" returns the air quality now at the latitude and longitude you send. You get the air quality index, particle levels and gas levels. \"App Store search\" returns the apps the App Store finds for a query, in the order the App Store ranks them. \"Google Play search\" returns the apps Google Play finds for a query, in the order Google Play ranks them. \"ChatGPT answer\" returns ChatGPT's answer to a prompt. \"Perplexity answer\" returns Perplexity's answer to a prompt. \"Gemini answer\" returns Gemini's answer to a prompt. \"Bing Copilot answer\" returns Bing Copilot's answer to a prompt. \"Business verification\" looks a company up by legal name in a state's register and returns the register's record of the company.","score":"We score each plan out of 100 on five parts: price, data, cost to get started, bundled calls and performance. We score data and performance from our benchmark of the provider's call. Until we benchmark the call, the plan's data, performance and Overall scores are N/A. The data, performance and Overall scores are also N/A on a plan that lacks a check or feature the benchmarked plan has. A plan whose data score is 0 has an Overall score of 0, whatever the plan's other scores. Each API's sheet shows what we measured on each benchmarked plan, in the columns after the price. We rank a plan's price per 1,000 against the other scored plans of the same API. We score cost to get started and bundled calls on the plan alone. We give N/A to yearly plans, contact us plans and plans over $500 to start. We also give N/A to plans bought on a marketplace and plans that need your own LinkedIn or X account. We score a free plan only when the provider has no paid plan for that call. The free plan must never end. Any limit on the plan's calls must reset each day or sooner. Other free plans get N/A. A plan we don't score gets no score for any of the five parts, even when we benchmarked the call. Click Score in the sheet's bar to set the five weights. The JSON, datacircle.json and datacircle.csv give each plan's score at the default weights. A plan with N/A has an empty score in the JSON, datacircle.json and datacircle.csv. The sheet's CSV has no scores.","Price score":"The plan's price score out of 100. We rank the plan's $ per 1,000 against the $ per 1,000 of the other scored plans of the same API. We also count the cost of a call that finds nothing. Some plans give no $ per 1,000. For those plans, when each call returns one result, we use the price our benchmark paid per call. We scale that price by what a credit costs on the plan. We skip our benchmark's price for a plan if another paid plan for the same call lists a $ per 1,000. Plans for one call can each charge a different price per call. On the sheet, click or tap the score to see how we worked out the score.","Data score":"The plan's data score out of 100, from our benchmark of the provider's call. On some APIs, the score measures how complete the call's answer is. On others, the score measures how often the answer is right. We lower the score when we test the call on fewer inputs than the benchmark has. Until we benchmark the call, the score is N/A, and so is the Overall score. The data, performance and Overall scores are also N/A on a plan that lacks a check or feature the benchmarked plan has. On the sheet, click or tap the score to see how we scored the plan. Each API's sheet shows what we measured on each benchmarked plan, in the columns after the price.","Cost to get started score":"The plan's score out of 100 for getting your first result. The score weighs who can get the plan, how you pay, and the least you pay to start. On the sheet, click or tap the score to see why.","Bundle score":"The plan's score out of 100 for the other calls the plan's price gets you. Also pays for lists those calls. On the sheet, click or tap the score to see why.","Performance score":"The plan's performance score out of 100, from our benchmark of the provider's call. We divide the fastest benchmarked provider's median time by this provider's median time. We compare live calls with live calls, and calls that answer from a copy with each other. A median under 0.1 s counts as 0.1 s, since the baseline we take off varies by about that much. The Performance score and the Overall score are N/A until we benchmark the call. The data, performance and Overall scores are also N/A on a plan that lacks a check or feature the benchmarked plan has. If the call gave no answer we could time, the Performance score is N/A. The Overall score then counts Performance as 0. The Performance score is N/A when we timed no other call of the same kind in the same benchmark. The Overall score then leaves Performance out. On the sheet, click or tap the score to see how we scored the plan. Each API's sheet shows what we measured on each benchmarked plan, in the columns after the price.","perThousand":"The price of 1,000 places on this plan, in dollars. The price is 0 on a free plan. On a plan that charges by the call, each call asks for one place. We add the Start fee to each place's price. On a plan that charges by the page, we divide a page's price by the most results one page holds. Then we multiply by 1,000. We leave the price blank when the provider doesn't say how many results a page holds. On a search that charges by the page, we price the first page of each search, whatever the page holds. On a flat fee, we take the most places the plan allows in one month. We multiply those places by the months the fee covers. We divide the fee by that total. Then we multiply by 1,000. We leave the price blank when the provider doesn't say how many places the plan allows. A plan with no end date and only limits per second, minute, hour or day has no cap on places. A flat fee with no cap on places shows \"no limit\" on the sheet. We leave the price blank in the CSV and JSON. On a waterfall's paid plan, we show the average cost of a call. We take the price of each provider listed under Waterfall. We weight each price by how often a call reaches that provider. We leave the price blank when a provider a call can reach has no hit rate or page size. On a plan with a Monthly fee, we first subtract one month of the fee from the plan's units. Then we divide the plan's price by the number of places the remaining units buy. Then we multiply by 1,000. We leave the price blank when the Monthly fee uses up all the plan's units. Some plans limit calls per second, minute, hour, day or month. We divide the price by the places the limit allows, if that is fewer than the places you pay for. Then we multiply by 1,000. We leave the price blank on a top-up, because a top-up buys no fixed number of places. We also leave the price blank when the provider's website doesn't say what a place costs on this plan. We leave the price blank, too, when the website doesn't say how many places the price buys.","per":"The price counts a \"call\" or a \"result\". A call asks for one place. A result is each place a call returns. Some calls return a page of results. \"result\" means you pay for each result on the page. \"page of 50\" means you pay for each page of up to 50 results. You pay for a whole page even when the page holds fewer than 50. In the JSON, resultsPerPage is the most results a page holds. resultsPerPage is null when the price isn't per page or the provider doesn't say the page size. \"page, size not stated\" means the provider doesn't say how many results a page holds. On a search, a call is one search, and a \"page of 10\" holds up to 10 results. The price is for the first page of each search. Each further page costs the same as the first page.","billing":"How you pay. \"free\": the plan costs nothing. \"on-demand\": you pay for what you use, with nothing to buy first. \"one-time\": a pack or a top-up you pay for first, then use. \"contact\": no public price, so you ask the provider for one. A subscription: \"monthly\", \"quarterly\" (every three months), \"half-yearly\" (every six months) or \"yearly\". The sheet shows \"one-time\" as \"pay first\" and \"on-demand\" as \"pay as you go\".","perMonth":"On a subscription: the plan's price for one month in dollars. We divide the plan's Pay by the months the plan buys (termMonths), 12 on most yearly plans. We work out this price for the sheet, to the cent. The sheet's CSV and JSON leave this price out. datacircle.json and datacircle.csv have this price. Blank (null) on every other plan.","notFoundPerThousand":"What you pay for 1,000 places the provider has no air data for. 0 when the provider charges nothing for them, as on free plans. On a waterfall, the cost of a call when no provider finds the answer. That cost is the sum of the prices of the providers that charge for a miss.","strengths":"The plan's strengths, which we work out from the plan's row. Each strength is a band that many plans of the same API are in. Strengths differ by API. We list and explain them under Strengths on datacircle.dev/fields. Only LinkedIn profiles and Find email have strengths so far. Blank ([] in the JSON) when the plan has none, and then the plan's page leaves Strengths out. Under Filters, you see only the rows with every strength you tick.","aggregators":"Aggregators like treg and Deepline sell the row's call. With one aggregator account, you reach many providers. Each cell gives what a call costs through the aggregator with your own provider key. The cell also gives what 1,000 places cost when you pay the aggregator and have no account at the provider: \"treg: your key free, paid $1.50\". We add \"per 1,000 results\" when the aggregator charges per result found. We say \"paid, no fixed price\" when the aggregator publishes no price. When an aggregator charges by the page, we divide a page's price by the most results one page holds. Then we multiply by 1,000. We write \"paid, page size not stated\" when the aggregator doesn't say how many results a page holds. Some aggregators list the call but don't say whether you pay them or use your own key. For those, we write \"listed, how it's sold not stated\". An aggregator may sell one of the provider's calls without saying which. Then the cell ends with \"this call or another\", the provider's name and \"call\": \"this call or another Pubrio call\". A cell says \"none\" when no aggregator we checked for the row's API sells the call. A blank cell (null in the JSON) means we haven't checked any aggregator for that API. We skip calls an aggregator doesn't list. In the JSON, each aggregator has these keys. aggregator is the aggregator's name. url is the aggregator's page for the call. ownKey is what a call costs there with your own key, or null when you can't use yours. paid is true when you can pay the aggregator. paid and ownKey are both null when the aggregator doesn't say how the call is sold. callStated is false when the aggregator doesn't say whether the call is this one or another of the provider's. usd is the aggregator's price in dollars for one per, or null when the aggregator sets no price. perThousand is the aggregator's price in dollars for 1,000. per is \"call\", \"result\" or \"page\". resultsPerPage is the most results a page holds, or null.","waterfall":"Some routers, like treg's, try one provider after another until one finds the answer. On a router's call, the Waterfall column lists each provider the router tries, in order. Each provider shows the router's name for the provider's call in brackets. Then we give the provider's price per 1,000 on this plan and how often the provider finds the answer. We add \"misses billed\" when the provider charges for a miss. When a provider charges by the page, we divide a page's price by the most results one page holds. Then we multiply by 1,000. We write \"page size not stated\" when the provider doesn't say how many results a page holds. The router publishes how often each provider finds an answer over all the router's calls. We assume each provider finds answers at that same rate on the calls the earlier providers miss. We leave the Waterfall column blank on calls with a single provider. In the JSON, each step has these keys. provider is the provider's name. call is the provider's call, which you can also make alone. perThousand, per and resultsPerPage mean the same as on a plan's row. hitRate is from 0 to 1, or null when the router gives none. missesBilled is true when the provider charges for a miss.","repeatFree":"On a call that costs units: how long you can get a paid place again for free. On a flat fee with a call limit, the time before the same place counts toward the limit again. We copy the time from the provider's pages, like \"20 minutes\". \"no limit\" means the provider never charges again for a place you paid for once. \"never\" means the provider charges each time you get the place again. Blank when the provider's pages don't say.","resultsCap":"For a search API: the most results one search gets on this plan, however many pages you ask for. \"no limit\" when the provider says you can get every match. Blank (null in the JSON) when the provider's docs don't say, or when the API isn't a search. On a plan that charges by the page, you pay for each page you ask for.","startPerCall":"A fee in dollars you pay once for each call, on top of the price per place. An Apify Actor's start fee is one. You pay the same fee for a call of 1,000 places or a call of one place. On a plan that charges by the call, each call asks for one place. On that plan, the $ per 1,000, List $ per 1,000, Overage and Enough for columns all count the Start fee. On a plan that charges by the result or the page, a call can return any number of results. On those plans, the $ per 1,000, List $ per 1,000, Overage and Enough for columns leave the Start fee out. The Start fee is $0.00 on a free plan, and blank when the plan has no start fee. A provider's page can give a range, like \"2-3 credits\". startPerCall then holds the lowest fee and startPerCallMax holds the highest. The sheet and the CSV show \"$0.04 to $0.06\". startPerCallMax is blank on a plan with one start fee or none.","monthlyFee":"A monthly fee the call needs. The provider takes the fee from the plan's units. For example, RouterGrowth charges $9.625 a month for each LinkedIn account you connect. monthlyFee is the fee in dollars. monthlyFeePer is what one fee pays for, like \"LinkedIn account\". The Enough for and $ per 1,000 columns count what is left after one month of the fee. Blank (null in the JSON) when the call has no monthly fee.","extras":"Fields that cost more than the row's price. Each group of extra fields has fields and perThousand. perThousand is the price you pay on top of the row's price. Some providers charge for each search and also for the extra fields on each result. For those providers, perThousand is the price for 1,000 searches. We assume each search returns the most results the plan allows.","Also pays for":"The other calls you get for the plan's price. The other calls each have a separate limit. We use the provider's words. When a plan pays for more than 40 other calls, we write their count instead, like \"300 other calls\". We leave out apps, extensions, MCP servers, proxies and storage, since they are not calls. We also leave out features you can use only in the provider's app, like sending the provider's email campaigns. For example, gtm-api.com's account price also buys 100 searches, 50 messages and 25 connection requests a day. \"nothing\" when you get only the row's call. The row's $ per 1,000 is for that call alone, since providers don't say how to split their price. Blank (null in the JSON) until we read the provider's plan. Also blank on a \"contact\" plan whose pages don't say what the price buys.","overagePerThousand":"On a subscription: dollars for each 1,000 places you get past the plan's units, when the provider sells extra places. On a plan that charges by the call, Overage includes the Start fee.","unitsCap":"\"hard\" means calls stop once the plan's units run out. \"soft\" means calls go on after the plan's units run out. Those calls cost the Overage price when the provider gives one. Blank (null in the JSON) when the provider's pages don't say.","addons":"On an email API's subscription: the packs of units the provider sells on top of the plan. We read them on the pricing page. Each pack has units and pay, in the plan's currency. renews is \"month\" or \"year\" when you pay for the pack again with the plan. renews is \"never\" when you buy the pack once. perThousand is dollars for 1,000 emails at the pack's price. The sheet's CSV says \"500 credits a month for $10 ($20.00 per 1,000)\". An empty list when the provider sells none. Blank (null) on every other plan.","catchAllPerThousand":"On an email API: dollars for 1,000 calls that return an address at a catch-all domain. Such a domain takes mail for any address. So you can't check whether the person's mailbox exists, and the email may bounce. 0 when such calls cost nothing, or when the provider returns no such address. The same as the row's $ per 1,000 when the provider charges for any address found. Blank when the provider's pages don't say.","bounceRefund":"On an email API: the credit or refund the provider gives when a paid address bounces. Also the conditions, in the provider's words, like \"the credit, reported from the dashboard or the API and reviewed\". \"never\" when the provider's pages say a bounced address stays charged. Blank when the pages don't say.","pitch":"How the provider sells the row's call, quoted from the call's own page. When one page covers all the provider's calls, we quote the provider's own pitch. \"[...]\" marks a cut.","freshness":"How old the answer may be, from the provider's pages. \"live\": the provider gets the data at the moment you call. The provider reads sources like LinkedIn, company websites, job boards, search results, keyword data or a page you send. Or the provider finds or checks an email or phone number at the moment you call. Some providers keep each answer for an hour or less. They give the same answer to anyone who asks the same question in that time. We call such a plan \"live\" too. Renidly keeps each answer for 20 minutes. \"1 month\" or \"30 days\": the provider answers from a copy refreshed that often. \"as of 2025-11-13\": from a copy last refreshed that day. \"stored\": from a copy the provider's pages don't date. Some email or phone checks read only the format, the domain's DNS and the provider's own lists. We mark those checks \"stored\" too. Such a check never asks the mail server or the carrier. Freshness is blank (null in the JSON) when the provider's pages don't say how fresh the answer is. Freshness is also blank when the pages don't agree with each other. A plan whose Freshness says a copy is on the API's sheet, beside the plans that read live. In brackets, we list the fields whose freshness differs on the provider's pages. fieldFreshness gives the freshness of each of those fields. Bright Data's LinkedIn profile is \"live (current title, jobs, schools: as of 2025-11-13)\". LinkedIn put those three behind a login wall, so Bright Data serves them from a cache.","history":"How far back the answers reach, on an API whose answers are dated. A company's funding rounds and open jobs are dated. \"since 2016\": back to 2016. \"open only\": only what is open now. \"the last 7 days\": a window that ends today. \"no limit\": every one ever. \", closed only\" after a value: the closed ones alone. Blank (null in the JSON) when the provider's pages don't say, or when the answers aren't dated.","countries":"On Validate phone, the countries whose numbers the call checks, like \"United States\". We take them from the provider's pages. \"Worldwide\": the call checks numbers from any country, or from over 100 countries. Blank (null in the JSON) until we read the countries on the provider's pages. Also blank when the provider's pages don't list the countries. Always blank on every other API.","fullFamilyTree":"On Company hierarchy, this column says whether one call gives the whole family tree. The whole tree runs from the top parent down each branch. \"yes\" (true in the JSON): one call gives the whole tree, counting every page of results the call returns. \"no\" (false): one call gives part of the tree, like the parents or one level of subsidiaries. You call again for each company to get the rest. The column is blank (null in the JSON) until we read the provider's website. The column is also blank when the provider's website doesn't say. Always blank on every other API.","checks":"This column lists the checks each call makes, as the provider's pages describe them. You find this column on the Validate email and Validate phone sheets. On Find email, the column lists the checks a finder makes on an address before giving you the address. A finder that asks the mail server takes longer than a finder that doesn't. On an email, \"format\": the address is well formed. \"mail servers\": the domain has servers that take mail. \"disposable domains\": the call spots a domain on a list of throwaway domains. \"role addresses\": the call spots a shared address, like sales@. \"mailbox\": the call checks with the mail server that the mailbox exists. On a number, \"numbering plan\": the number fits the rules of the number's country. \"carrier\": the call finds the carrier the number is with today. If the owner moved the number to a new carrier, you see the new carrier. \"line in service\": the call checks with the network that the line is live. \"messaging apps\": the call checks with a messaging app, like WhatsApp, that the number has an account there. A call without \"mailbox\" doesn't check the mailbox. Such a call can pass an address that bounces. The column is blank (null in the JSON) until we read the provider's pages. Also blank when the provider's pages don't say. Always blank on every other API.","searchesIn":"This column says where the call looks for posts. We read where the call looks on the provider's pages. You find this column on the LinkedIn post search sheet. \"LinkedIn's search\": the call runs LinkedIn's own search. \"Google's index\": the call searches Google for LinkedIn posts. Google sets how many posts the call can find. New posts show up only after Google indexes them. \"a search engine's index\": the call searches another search engine for LinkedIn posts. We also mark a call \"a search engine's index\" when the provider's pages don't name the search engine. \"the provider's own database\": the call searches a copy of LinkedIn posts the provider keeps. We leave the column blank (null in the JSON) when the provider's pages don't say. We leave the column blank for every other API.","keep":"How long the provider's terms let you keep the API's answers. \"no limit\" when the terms set none. \"no API terms\" when the provider has no API terms.","use":"What the provider's terms let you use the API's answers for. Also what the terms ask in return, like a link back or a credit. \"any\" when the terms limit nothing and ask nothing. \"no API terms\" when the provider has no API terms.","pay":"The plan's price, in the plan's currency. On a subscription, the price covers the months in termMonths. In the sheet's CSV, we write the months after the price. Some examples: \"$39.00/month\", \"€99.00/month\" on a plan in euros, or \"$468.00/15 months\" on gtm-api.com's yearly plan. A pack's Pay is the pack's price. A top-up's Pay is the smallest amount you can top up. On a top-up with no minimum from the provider, Pay is blank (null in the JSON). A free plan's Pay is $0.00. On a usage tier, Pay is what you pay each month for your calls below that tier. Each of those calls costs the price of the tier the call is in. Some tiers have a minimum. If your calls below the tier cost less than the minimum, you pay the minimum. When a usage tier sits on a subscription, you also pay the plan's price. Crawlbase has a tier for the next 10M requests. On that tier, Pay is $583: what you pay each month for your calls below the tier. On Mailgun's Foundation plan, you pay $95 a month for up to 5,000 validations. The $95 is the $35 plan plus $60 for the validations. On a pay-as-you-go plan, the sheet's Pay column shows Charged.","units":"What the plan gives for the price, counted in unit. On a usage tier, where the tier starts: \"from the 51st call a month\".","calls":"The number of places you get for the plan's price, counted in per. On a plan that charges by the page, calls and monthlyCap count pages. calls is the number of places the plan's units pay for: \"100 calls, once\" for a free trial, \"1,250 results a month\" for an allowance. On a plan that charges by the call, calls is the plan's units divided by the cost of one call. That cost includes the Start fee. A plan can limit calls per day or per month. Then calls is the most calls the limit allows before the units renew. The limit counts each call as one place. On a plan that charges by the page, the limit counts each call as one page. Say a plan allows 10,000 requests a month and 200 calls a day. You get 6,000 calls a month, because 30 days of 200 calls is 6,000. Some providers count each result toward the limit. A list you send in one call counts one result for each row. When a provider counts results, limitsCountedIn says \"result\", and calls and monthlyCap count results. A limit of 2,000 results a day allows 60,000 results in a month of 30 days. We fill monthlyCap when a call costs 0 units, like a call on a flat fee. monthlyCap is the most places you get a month, or \"no limit\". On a plan with a daily or monthly limit, monthlyCap is the most calls in 30 days. 3,000 calls a day make 90,000. The Enough for column shows 3,000 calls a day as \"90,000 calls a month\". Any plan can limit calls per hour, minute or second. calls and monthlyCap also hold the most calls a limit per hour, minute or second allows. A limit of 50 calls an hour allows 36,000 calls in 30 days. We count a call limit in monthlyCap only when each call returns one place or a fixed-size page. On a free trial shorter than 30 days, monthlyCap is the most calls you get over the whole trial. The trial's calls never renew. A 7-day trial with 1,000 calls a day shows as \"7,000 calls, once\". Enough for shows calls, or monthlyCap when a row has no calls. On a plan with a Monthly fee, the provider first takes one month's fee from the plan's units. calls counts the calls left after the fee. We count the calls again each time the provider refills the plan's units. Enough for says \"0 calls left after the monthly fee\" when the fee uses up all the plan's units. Enough for is blank when the provider doesn't say how many places you get. Enough for is also blank on pay as you go plans and on top-ups. Enough for is blank too on subscriptions that charge for each place on top of the fee. Enough for is also blank when a waterfall's average call costs nothing. calls and monthlyCap are null when Enough for is blank.","expires":"When the units you don't use lapse, in the provider's words: \"never\", \"365 days\", \"at renewal: unused credits do not carry over\". Blank when the provider's pages don't say.","perDay":"The most calls a day. Some providers count each result of a call instead, like each row of a list. limitsCountedIn says what the provider counts: \"call\", \"result\" or \"page\". The provider counts the same unit for this column and for the plan's monthly limit. limitsCountedIn says \"call\" when the provider's docs don't say.","perSecond":"The most calls a second you can keep up. When the provider counts a limit over a longer window, we divide the limit. We divide a limit per minute by 60, per 5 minutes by 300, per hour by 3,600. When the provider sets several limits, we show the tightest: 25 a second and 40 a minute is 0.67. We round to two decimals. A rate under 0.1 keeps two digits past the zeros: 5 an hour is 0.0014.","concurrent":"The most calls running at once, or \"no limit\". \"n/a\" when the provider sets no cap on calls at once but limits calls by the second. Then Per second sets your limit. Blank (null) when the provider's pages don't say.","batch":"The most places in one call on this plan. 1 when the call takes one at a time. \"no limit\" when the provider says a call takes any number. Blank (null) when a call takes a list and the provider's pages don't say how many. A call that refuses fewer than a set number shows the fewest and the most, like \"2,000 to 2,000,000\". A call that needs at least 2,000 and has no top limit shows \"2,000 or more\". A call that needs at least 2,000 shows \"at least 2,000\" when the provider's pages don't give the top limit.","answer":"The way you get the call's answer. \"in the call\" when the call's response holds the answer. \"by polling or webhook\" when the call returns a job. Once the job is done, you get the answer from another call or at your webhook. \"in the call or by polling\" when the call returns the answer if the answer is ready in time. If the answer isn't ready, the call returns a job you check later. An Apify Actor returns a job when the run goes past 5 minutes. \"in the call or by webhook\" when you choose in your request. \"by polling\" when only another call gets the answer. \"by webhook\" when only a URL you give gets the answer. Blank (null) when the provider's pages don't say.","latencyMs":"The median time a call takes. For a benchmarked call, we show our benchmark's median. The API's benchmark columns show the same median. From each call's time, we subtract the mean time of three free calls to the same provider, made just before. If that mean is longer than the call, we use the provider's median baseline instead. We cap the baseline at the call's time, so no time is below zero. For a call we didn't benchmark, we show the time from the provider's pages. Or we show a time we measured when we added the row. On a plan without a check or feature of the benchmarked plan, we show the provider's time or our own. We leave the median blank (null) when we have no time. We also leave the median blank when the benchmarked call gave no answer we could time. The JSON and datacircle.csv give the time in milliseconds. The sheet and the sheet's CSV give the time in seconds.","send":"What you give the call: a latitude and longitude. The call needs the inputs before \"Optional:\". The optional ones come after \"Optional:\", or after a semicolon in the CSV and the JSON.","method":"The call's HTTP method.","path":"We give the path from the provider's docs. When that path fails, we give the path that works. Each plan of a call has the same path. A plan the provider serves at a separate address has a separate path.","plan":"The plan's name on the provider's pricing page.","who":"Who the provider offers the plan to: \"anyone\", or the condition the provider's pages set, like \"anyone with a work email\" or \"on approval of an application\".","readFrom":"The pages we read the row's values from. They are the sheet's last column: click a cell to see each page, or press ⌘C to copy them all."},"billed":{"free":"Free: nothing to pay","on-demand":"Nothing to buy first: you pay as you go","one-time":"You buy credit first, as a pack or any amount you like, then spend the credit on calls","contact":"No public price: you ask the provider for one","monthly":"A monthly subscription","quarterly":"A quarterly subscription","half-yearly":"A subscription for 6 months","yearly":"A yearly subscription"},"defaults":["No contact us plans","No free plans","No yearly plans","$500 or less to start"],"kept":27,"paid":{"ranked":{"Air quality":[0,0,0,0.00049,0.00049,0.0019,0.0019,0.0023,0.0027,0.0028,0.0029,0.0035,0.0036,0.0038,0.004,0.004,0.0048,0.005,0.0065,0.0066,0.0083,0.0083,0.012,0.012,0.012,0.012,0.012,0.012,0.0133,0.015,0.015,0.015,0.015,0.015,0.015,0.015,0.015,0.015,0.0163,0.0166,0.018,0.0223,0.0263,0.0299,0.03,0.0326,0.0483,0.054,0.0667,0.0667,0.0668,0.0718,0.0718,0.0895,0.0895,0.0979,0.1,0.1114,0.1114,0.149,0.2242,0.2242,0.2242,0.2988,0.2988,0.2988,0.4479,0.4479,0.4479,0.5,0.59,0.5982,0.5982,0.5982,0.6667,0.75,1,1.125,1.5,1.688,1.973,2.75,2.75,3,3,3.2,4,4,4.5,4.5,5,5,5.333,10]},"bench":{"Air quality|Open-Meteo|/v1/air-quality":{"data":0.6714,"performance":1,"median":100,"measured":2,"fastest":"Open-Meteo","fastestMedian":100,"fastestMeasured":2,"side":"live","called":20,"inputs":20,"fewer":false,"days":["2026-10-30"],"row":"Open-Meteo"},"Air quality|Visual Crossing|/VisualCrossingWebServices/rest/services/timeline/{location}|Timeline Weather API: air quality elements":{"data":0.6103,"performance":1,"median":100,"measured":65,"fastest":"Open-Meteo","fastestMedian":100,"fastestMeasured":2,"side":"live","called":20,"inputs":20,"fewer":false,"days":["2026-10-30"],"row":"Visual Crossing"},"Air quality|Weatherbit|/v2.0/current/airquality|Current Air Quality API":{"data":0.4272,"performance":1,"median":100,"measured":20,"fastest":"Open-Meteo","fastestMedian":100,"fastestMeasured":2,"side":"live","called":20,"inputs":20,"fewer":false,"days":["2026-10-30"],"row":"Weatherbit, Current Air Quality API"},"Air quality|Weatherbit|/v2.0/forecast/airquality|Air Quality Forecast API":{"data":0.4883,"performance":1,"median":100,"measured":37,"fastest":"Open-Meteo","fastestMedian":100,"fastestMeasured":2,"side":"live","called":20,"inputs":20,"fewer":false,"days":["2026-10-30"],"row":"Weatherbit, Air Quality Forecast API"},"Air quality|Omkar Cloud|/air-quality/coords":{"data":0.4272,"performance":0.09871668311944719,"median":1013,"measured":1013,"fastest":"Open-Meteo","fastestMedian":100,"fastestMeasured":2,"side":"live","called":20,"inputs":20,"fewer":false,"days":["2026-10-30"],"row":"Omkar Cloud"},"Air quality|ReefAPI|/weather-intel/v1/air_quality":{"data":0.5016,"performance":0.04752851711026616,"median":2104,"measured":2104,"fastest":"Open-Meteo","fastestMedian":100,"fastestMeasured":2,"side":"live","called":20,"inputs":20,"fewer":false,"days":["2026-10-30"],"row":"ReefAPI"},"Air quality|Botoi|/v1/air-quality/check":{"data":0.4883,"performance":0.6493506493506493,"median":154,"measured":154,"fastest":"WeatherAPI.com","fastestMedian":100,"fastestMeasured":73,"side":"copy","called":20,"inputs":20,"fewer":false,"days":["2026-10-30"],"row":"Botoi"},"Air quality|WeatherAPI.com|/v1/current.json":{"data":0.4883,"performance":1,"median":100,"measured":73,"fastest":"WeatherAPI.com","fastestMedian":100,"fastestMeasured":73,"side":"copy","called":20,"inputs":20,"fewer":false,"days":["2026-10-30"],"row":"WeatherAPI.com"}},"free":["Air quality|Airly|/v2/measurements/point|Get measurements for a point on map","Air quality|Airly|/v2/measurements/nearest|Get measurements from nearest installation","Air quality|WAQI|/feed/geo:{lat}%3B{lng}/"]},"alert":true,"bench":{"groups":[{"name":"Time per place","note":"We called each provider's calls once on the same 20 places, on 30 October 2026. Time is each call minus a baseline, so the distance to the provider's servers drops out. We take each call's time and subtract a baseline, the time of a few free calls. For each place, we time the first call. We don't time a call that found nothing for the place. The baseline is the mean of three free calls to the same provider just before the call, on the same connection. If that mean is longer than the call, we use the provider's median baseline, capped at the call's time, so no time is below zero.","columns":[{"name":"Median","kind":"ms","values":{"Open-Meteo":2,"Visual Crossing":65,"Weatherbit, Current Air Quality API":20,"Weatherbit, Air Quality Forecast API":37,"Omkar Cloud":1013,"ReefAPI":2104,"Botoi":154,"WeatherAPI.com":73}},{"name":"10th percentile","kind":"ms","values":{"Open-Meteo":1,"Visual Crossing":41,"Weatherbit, Current Air Quality API":17,"Weatherbit, Air Quality Forecast API":29,"Omkar Cloud":976,"ReefAPI":1424,"Botoi":122,"WeatherAPI.com":58}},{"name":"90th percentile","kind":"ms","values":{"Open-Meteo":3,"Visual Crossing":165,"Weatherbit, Current Air Quality API":25,"Weatherbit, Air Quality Forecast API":42,"Omkar Cloud":1220,"ReefAPI":2531,"Botoi":208,"WeatherAPI.com":91}},{"name":"Fastest","kind":"ms","values":{"Open-Meteo":1,"Visual Crossing":40,"Weatherbit, Current Air Quality API":13,"Weatherbit, Air Quality Forecast API":26,"Omkar Cloud":870,"ReefAPI":1343,"Botoi":109,"WeatherAPI.com":39}},{"name":"Slowest","kind":"ms","values":{"Open-Meteo":7,"Visual Crossing":271,"Weatherbit, Current Air Quality API":28,"Weatherbit, Air Quality Forecast API":43,"Omkar Cloud":1571,"ReefAPI":2878,"Botoi":445,"WeatherAPI.com":124}},{"name":"Baseline","kind":"ms","values":{"Open-Meteo":121,"Visual Crossing":29,"Weatherbit, Current Air Quality API":41,"Weatherbit, Air Quality Forecast API":42,"Omkar Cloud":76,"ReefAPI":111,"Botoi":55,"WeatherAPI.com":81}}]},{"name":"Places called for air quality","note":"Called: the places we sent to each provider, with their latitude and longitude. Found: the places where the answer held an air quality index or the level of a particle or a gas. An answer that holds only a time, a station or the name of a main pollutant counts as not found. Parts returned: the parts below that the provider's answer held at least once.","columns":[{"name":"Called","kind":"count","values":{"Open-Meteo":[20,20],"Visual Crossing":[20,20],"Weatherbit, Current Air Quality API":[20,20],"Weatherbit, Air Quality Forecast API":[20,20],"Omkar Cloud":[20,20],"ReefAPI":[20,20],"Botoi":[20,20],"WeatherAPI.com":[20,20]}},{"name":"Found","kind":"count","values":{"Open-Meteo":[20,20],"Visual Crossing":[20,20],"Weatherbit, Current Air Quality API":[20,20],"Weatherbit, Air Quality Forecast API":[20,20],"Omkar Cloud":[20,20],"ReefAPI":[17,20],"Botoi":[20,20],"WeatherAPI.com":[20,20]}},{"name":"Parts returned","kind":"count","values":{"Open-Meteo":[11,20],"Visual Crossing":[10,20],"Weatherbit, Current Air Quality API":[7,20],"Weatherbit, Air Quality Forecast API":[8,20],"Omkar Cloud":[7,20],"ReefAPI":[16,20],"Botoi":[8,20],"WeatherAPI.com":[8,20]}}]},{"name":"The air quality call","note":"For each provider, we made one call per place, with the place's latitude and longitude. The Call column shows every option we sent. For example, we asked Weatherbit's forecast call for one hour. Open-Meteo counts a request for more than ten fields as more than one call. We asked Open-Meteo for ten fields. Weatherbit has two air quality calls, and each call has a row. Charged per place: what one place cost on this run, in dollars. We used the price of the provider's cheapest paid plan. Some providers returned no data for a place. For those places, the cell shows what the call still cost.","columns":[{"name":"Call","kind":"text","values":{"Open-Meteo":"GET air-quality-api.open-meteo.com/v1/air-quality, the point as latitude and longitude, with current set to ten variables (a request of more than ten counts as more than one call)","Visual Crossing":"GET weather.visualcrossing.com/VisualCrossingWebServices/rest/services/timeline/{location} with the point as lat,lon and today, include current and unitGroup metric, elements set to the nine air quality elements and the reading's time","Weatherbit, Current Air Quality API":"GET api.weatherbit.io/v2.0/current/airquality, the point as lat and lon","Weatherbit, Air Quality Forecast API":"GET api.weatherbit.io/v2.0/forecast/airquality, the point as lat and lon, hours 1 (the one hour that comes first)","Omkar Cloud":"GET air-quality-api.omkar.cloud/air-quality/coords, the point as lat and lon","ReefAPI":"POST api.reefapi.com/weather-intel/v1/air_quality, the point as lat and lon, radius_km 25 (the most its stations are searched within)","Botoi":"POST api.botoi.com/v1/air-quality/check, the point as lat and lng","WeatherAPI.com":"GET api.weatherapi.com/v1/current.json, the point as q lat,lon with aqi yes, the weather the same current element carries left on"}},{"name":"Charged per place","kind":"text","values":{"Open-Meteo":"$0.000033 a place","Visual Crossing":"$0.0001 a place","Weatherbit, Current Air Quality API":"$0.0000083 a place","Weatherbit, Air Quality Forecast API":"$0.0000083 a place","Omkar Cloud":"$0.0053 a place","ReefAPI":"$0.0015 a place, the same when not found","Botoi":"$0.00003 a place","WeatherAPI.com":"$0.0000023 a place"}}]},{"name":"The reading","note":"Each cell shows two numbers. First: the places where the answer held the part named in the column's title. Second: the places where we count the part. We count a part when a live call that offers the part returned it for the place. On a place where fewer than two live calls offer the part and return data, we count the part when any call returned it. A value of 0 counts as held. A call that doesn't offer this part shows 0.","columns":[{"name":"Reading time","kind":"count","values":{"Open-Meteo":[20,20],"Visual Crossing":[20,20],"Weatherbit, Current Air Quality API":[0,20],"Weatherbit, Air Quality Forecast API":[20,20],"Omkar Cloud":[0,20],"ReefAPI":[17,20],"Botoi":[0,20],"WeatherAPI.com":[0,20]}},{"name":"Station","kind":"count","values":{"Open-Meteo":[0,17],"Visual Crossing":[0,17],"Weatherbit, Current Air Quality API":[0,17],"Weatherbit, Air Quality Forecast API":[0,17],"Omkar Cloud":[0,17],"ReefAPI":[17,17],"Botoi":[0,17],"WeatherAPI.com":[0,17]}}]},{"name":"The index","note":"Each cell shows two numbers. First: the places where the answer held the part named in the column's title. Second: the places where we count the part. We count a part when a live call that offers the part returned it for the place. On a place where fewer than two live calls offer the part and return data, we count the part when any call returned it. A value of 0 counts as held. A call that doesn't offer this part shows 0.","columns":[{"name":"US AQI","kind":"count","values":{"Open-Meteo":[20,20],"Visual Crossing":[20,20],"Weatherbit, Current Air Quality API":[20,20],"Weatherbit, Air Quality Forecast API":[20,20],"Omkar Cloud":[0,20],"ReefAPI":[16,20],"Botoi":[20,20],"WeatherAPI.com":[20,20]}},{"name":"European AQI","kind":"count","values":{"Open-Meteo":[20,20],"Visual Crossing":[20,20],"Weatherbit, Current Air Quality API":[0,20],"Weatherbit, Air Quality Forecast API":[0,20],"Omkar Cloud":[0,20],"ReefAPI":[17,20],"Botoi":[20,20],"WeatherAPI.com":[0,20]}},{"name":"UK index","kind":"count","values":{"Open-Meteo":[0,20],"Visual Crossing":[0,20],"Weatherbit, Current Air Quality API":[0,20],"Weatherbit, Air Quality Forecast API":[0,20],"Omkar Cloud":[0,20],"ReefAPI":[0,20],"Botoi":[0,20],"WeatherAPI.com":[20,20]}},{"name":"Index, scale not named","kind":"count","values":{"Open-Meteo":[0,20],"Visual Crossing":[0,20],"Weatherbit, Current Air Quality API":[0,20],"Weatherbit, Air Quality Forecast API":[0,20],"Omkar Cloud":[20,20],"ReefAPI":[0,20],"Botoi":[0,20],"WeatherAPI.com":[0,20]}},{"name":"Main pollutant","kind":"count","values":{"Open-Meteo":[0,17],"Visual Crossing":[0,17],"Weatherbit, Current Air Quality API":[0,17],"Weatherbit, Air Quality Forecast API":[0,17],"Omkar Cloud":[0,17],"ReefAPI":[17,17],"Botoi":[0,17],"WeatherAPI.com":[0,17]}}]},{"name":"Particles","note":"Each cell shows two numbers. First: the places where the answer held the part named in the column's title. Second: the places where we count the part. We count a part when a live call that offers the part returned it for the place. On a place where fewer than two live calls offer the part and return data, we count the part when any call returned it. A value of 0 counts as held. A call that doesn't offer this part shows 0.","columns":[{"name":"PM2.5","kind":"count","values":{"Open-Meteo":[20,20],"Visual Crossing":[20,20],"Weatherbit, Current Air Quality API":[20,20],"Weatherbit, Air Quality Forecast API":[20,20],"Omkar Cloud":[20,20],"ReefAPI":[15,20],"Botoi":[20,20],"WeatherAPI.com":[20,20]}},{"name":"PM10","kind":"count","values":{"Open-Meteo":[20,20],"Visual Crossing":[20,20],"Weatherbit, Current Air Quality API":[20,20],"Weatherbit, Air Quality Forecast API":[20,20],"Omkar Cloud":[20,20],"ReefAPI":[7,20],"Botoi":[20,20],"WeatherAPI.com":[20,20]}},{"name":"PM1","kind":"count","values":{"Open-Meteo":[0,20],"Visual Crossing":[20,20],"Weatherbit, Current Air Quality API":[0,20],"Weatherbit, Air Quality Forecast API":[0,20],"Omkar Cloud":[0,20],"ReefAPI":[8,20],"Botoi":[0,20],"WeatherAPI.com":[0,20]}},{"name":"Dust","kind":"count","values":{"Open-Meteo":[20,20],"Visual Crossing":[0,20],"Weatherbit, Current Air Quality API":[0,20],"Weatherbit, Air Quality Forecast API":[0,20],"Omkar Cloud":[0,20],"ReefAPI":[0,20],"Botoi":[0,20],"WeatherAPI.com":[0,20]}},{"name":"Aerosol optical depth","kind":"count","values":{"Open-Meteo":[20,20],"Visual Crossing":[0,20],"Weatherbit, Current Air Quality API":[0,20],"Weatherbit, Air Quality Forecast API":[0,20],"Omkar Cloud":[0,20],"ReefAPI":[0,20],"Botoi":[0,20],"WeatherAPI.com":[0,20]}},{"name":"Black carbon","kind":"count","values":{"Open-Meteo":[0,2],"Visual Crossing":[0,2],"Weatherbit, Current Air Quality API":[0,2],"Weatherbit, Air Quality Forecast API":[0,2],"Omkar Cloud":[0,2],"ReefAPI":[2,2],"Botoi":[0,2],"WeatherAPI.com":[0,2]}},{"name":"Particle count","kind":"count","values":{"Open-Meteo":[0,8],"Visual Crossing":[0,8],"Weatherbit, Current Air Quality API":[0,8],"Weatherbit, Air Quality Forecast API":[0,8],"Omkar Cloud":[0,8],"ReefAPI":[8,8],"Botoi":[0,8],"WeatherAPI.com":[0,8]}}]},{"name":"Gases","note":"Each cell shows two numbers. First: the places where the answer held the part named in the column's title. Second: the places where we count the part. We count a part when a live call that offers the part returned it for the place. On a place where fewer than two live calls offer the part and return data, we count the part when any call returned it. A value of 0 counts as held. A call that doesn't offer this part shows 0.","columns":[{"name":"Ozone","kind":"count","values":{"Open-Meteo":[20,20],"Visual Crossing":[20,20],"Weatherbit, Current Air Quality API":[20,20],"Weatherbit, Air Quality Forecast API":[20,20],"Omkar Cloud":[20,20],"ReefAPI":[17,20],"Botoi":[20,20],"WeatherAPI.com":[20,20]}},{"name":"Nitrogen dioxide","kind":"count","values":{"Open-Meteo":[20,20],"Visual Crossing":[20,20],"Weatherbit, Current Air Quality API":[20,20],"Weatherbit, Air Quality Forecast API":[20,20],"Omkar Cloud":[20,20],"ReefAPI":[9,20],"Botoi":[20,20],"WeatherAPI.com":[20,20]}},{"name":"Sulphur dioxide","kind":"count","values":{"Open-Meteo":[20,20],"Visual Crossing":[20,20],"Weatherbit, Current Air Quality API":[20,20],"Weatherbit, Air Quality Forecast API":[20,20],"Omkar Cloud":[20,20],"ReefAPI":[7,20],"Botoi":[20,20],"WeatherAPI.com":[20,20]}},{"name":"Carbon monoxide","kind":"count","values":{"Open-Meteo":[20,20],"Visual Crossing":[20,20],"Weatherbit, Current Air Quality API":[20,20],"Weatherbit, Air Quality Forecast API":[20,20],"Omkar Cloud":[20,20],"ReefAPI":[8,20],"Botoi":[20,20],"WeatherAPI.com":[20,20]}},{"name":"Nitrogen monoxide","kind":"count","values":{"Open-Meteo":[0,3],"Visual Crossing":[0,3],"Weatherbit, Current Air Quality API":[0,3],"Weatherbit, Air Quality Forecast API":[0,3],"Omkar Cloud":[0,3],"ReefAPI":[3,3],"Botoi":[0,3],"WeatherAPI.com":[0,3]}},{"name":"Nitrogen oxides","kind":"count","values":{"Open-Meteo":[0,3],"Visual Crossing":[0,3],"Weatherbit, Current Air Quality API":[0,3],"Weatherbit, Air Quality Forecast API":[0,3],"Omkar Cloud":[0,3],"ReefAPI":[3,3],"Botoi":[0,3],"WeatherAPI.com":[0,3]}}]}],"inputs":{"said":"The 20 places we called, as each provider's call took them.","keys":["lat","lon"],"rows":[[48.766,-122.503],[41.57,-93.709],[43.796,-91.248],[41.5,-81.694],[48.138,11.597],[50.506,16.066],[45.522,-122.673],[51.536,-0.126],[41.938,-87.815],[36.322,-95.812],[37.786,-122.389],[26.689,-80.153],[39.15,-75.496],[42.088,-87.81],[47.273,28.217],[39.977,32.844],[39.937,-75.046],[40.394,-80.047],[39.617,-104.902],[46.604,0.307]]}},"more":"/assets/sheet-kkc2H65b.json"}