<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: 200 OK</title>
    <description>The latest articles on Forem by 200 OK (@200_ok_twohundred).</description>
    <link>https://forem.com/200_ok_twohundred</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3813498%2F9fcd683f-617e-466e-8514-c093eaeda0f8.png</url>
      <title>Forem: 200 OK</title>
      <link>https://forem.com/200_ok_twohundred</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/200_ok_twohundred"/>
    <language>en</language>
    <item>
      <title>Build a US Gas Price Tracker in 15 Minutes with JavaScript</title>
      <dc:creator>200 OK</dc:creator>
      <pubDate>Tue, 10 Mar 2026 22:17:00 +0000</pubDate>
      <link>https://forem.com/200_ok_twohundred/build-a-us-gas-price-tracker-in-15-minutes-with-javascript-2jhd</link>
      <guid>https://forem.com/200_ok_twohundred/build-a-us-gas-price-tracker-in-15-minutes-with-javascript-2jhd</guid>
      <description>&lt;p&gt;Gas prices vary wildly by state — over $2/gallon difference between California and Mississippi. Whether you're building a travel app, a fleet management tool, or just a personal finance dashboard — real-time fuel price data by state is surprisingly hard to find in a clean API.&lt;/p&gt;

&lt;p&gt;In this tutorial, I'll show you how to build a US gas price tracker using vanilla JavaScript and the &lt;a href="https://rapidapi.com/twohundredok-twohundredok-default/api/us-fuel-energy-prices" rel="noopener noreferrer"&gt;US Fuel &amp;amp; Energy Price API&lt;/a&gt; on RapidAPI.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We're Building
&lt;/h2&gt;

&lt;p&gt;A tracker that shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;National average gas prices (regular, midgrade, premium, diesel)&lt;/li&gt;
&lt;li&gt;State-by-state price comparison with a sortable list&lt;/li&gt;
&lt;li&gt;Gas vs electricity cost comparison by state&lt;/li&gt;
&lt;li&gt;Historical price trend for a selected state&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;No frameworks.&lt;/strong&gt; Just HTML, CSS, and vanilla JavaScript.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A free RapidAPI account (&lt;a href="https://rapidapi.com/auth/sign-up" rel="noopener noreferrer"&gt;sign up here&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Subscribe to the &lt;a href="https://rapidapi.com/twohundredok-twohundredok-default/api/us-fuel-energy-prices" rel="noopener noreferrer"&gt;US Fuel &amp;amp; Energy Price API&lt;/a&gt; (free tier — 100 requests/day)&lt;/li&gt;
&lt;li&gt;A text editor and browser&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Set Up the HTML
&lt;/h2&gt;

&lt;p&gt;Create an &lt;code&gt;index.html&lt;/code&gt; file:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
html
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
&amp;lt;head&amp;gt;
  &amp;lt;meta charset="UTF-8"&amp;gt;
  &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
  &amp;lt;title&amp;gt;US Gas Price Tracker&amp;lt;/title&amp;gt;
  &amp;lt;style&amp;gt;
    * { margin: 0; padding: 0; box-sizing: border-box; }
    body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: #0f172a; color: #e2e8f0; min-height: 100vh; padding: 2rem; }
    .container { max-width: 720px; margin: 0 auto; }
    h1 { font-size: 1.5rem; margin-bottom: 1.5rem; text-align: center; }

    .national-card { background: #1e293b; border-radius: 12px; padding: 1.5rem; margin-bottom: 1rem; }
    .price-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.75rem; margin-top: 1rem; }
    .price-item { background: #0f172a; border-radius: 8px; padding: 1rem; text-align: center; }
    .price-item .price { font-size: 1.5rem; font-weight: 700; color: #22c55e; }
    .price-item .type { font-size: 0.75rem; color: #94a3b8; margin-top: 0.25rem; text-transform: capitalize; }

    .controls { display: flex; gap: 0.5rem; margin-bottom: 1rem; flex-wrap: wrap; }
    .controls select, .controls button { padding: 0.6rem 1rem; border-radius: 8px; border: 1px solid #334155; background: #1e293b; color: #e2e8f0; font-size: 0.9rem; }
    .controls select { flex: 1; }
    .controls button { background: #22c55e; color: #0f172a; font-weight: 600; border: none; cursor: pointer; }
    .controls button:hover { background: #16a34a; }

    .state-card { background: #1e293b; border-radius: 12px; padding: 1.5rem; margin-bottom: 1rem; }
    .comparison-row { display: flex; justify-content: space-between; align-items: center; padding: 0.6rem 0; border-bottom: 1px solid #334155; }
    .comparison-row:last-child { border-bottom: none; }
    .comparison-row .state-name { font-weight: 500; }
    .comparison-row .state-price { font-weight: 700; font-family: monospace; font-size: 1.1rem; }
    .comparison-row .state-price.high { color: #ef4444; }
    .comparison-row .state-price.mid { color: #f59e0b; }
    .comparison-row .state-price.low { color: #22c55e; }

    .energy-card { background: #1e293b; border-radius: 12px; padding: 1.5rem; margin-bottom: 1rem; }
    .energy-compare { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-top: 0.75rem; }
    .energy-stat { background: #0f172a; border-radius: 8px; padding: 1rem; text-align: center; }
    .energy-stat .value { font-size: 1.3rem; font-weight: 700; }
    .energy-stat .label { font-size: 0.75rem; color: #94a3b8; margin-top: 0.25rem; }

    .hidden { display: none; }
    .loading { text-align: center; padding: 2rem; color: #64748b; }

    @media (max-width: 600px) {
      .price-grid { grid-template-columns: repeat(2, 1fr); }
    }
  &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
  &amp;lt;div class="container"&amp;gt;
    &amp;lt;h1&amp;gt;US Gas Price Tracker&amp;lt;/h1&amp;gt;
    &amp;lt;div id="national" class="hidden"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div class="controls"&amp;gt;
      &amp;lt;select id="stateSelect"&amp;gt;
        &amp;lt;option value="CA"&amp;gt;California&amp;lt;/option&amp;gt;
        &amp;lt;option value="TX"&amp;gt;Texas&amp;lt;/option&amp;gt;
        &amp;lt;option value="NY"&amp;gt;New York&amp;lt;/option&amp;gt;
        &amp;lt;option value="FL"&amp;gt;Florida&amp;lt;/option&amp;gt;
        &amp;lt;option value="IL"&amp;gt;Illinois&amp;lt;/option&amp;gt;
        &amp;lt;option value="PA"&amp;gt;Pennsylvania&amp;lt;/option&amp;gt;
        &amp;lt;option value="OH"&amp;gt;Ohio&amp;lt;/option&amp;gt;
        &amp;lt;option value="GA"&amp;gt;Georgia&amp;lt;/option&amp;gt;
        &amp;lt;option value="WA"&amp;gt;Washington&amp;lt;/option&amp;gt;
        &amp;lt;option value="CO"&amp;gt;Colorado&amp;lt;/option&amp;gt;
        &amp;lt;option value="MS"&amp;gt;Mississippi&amp;lt;/option&amp;gt;
      &amp;lt;/select&amp;gt;
      &amp;lt;button id="compareBtn"&amp;gt;Compare&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div id="stateResults" class="hidden"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div id="loading" class="loading"&amp;gt;Loading national averages...&amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;script src="app.js"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>api</category>
    </item>
    <item>
      <title>Build an Air Quality Dashboard in 15 Minutes with JavaScript</title>
      <dc:creator>200 OK</dc:creator>
      <pubDate>Tue, 10 Mar 2026 22:16:29 +0000</pubDate>
      <link>https://forem.com/200_ok_twohundred/build-an-air-quality-dashboard-in-15-minutes-with-javascript-2n2a</link>
      <guid>https://forem.com/200_ok_twohundred/build-an-air-quality-dashboard-in-15-minutes-with-javascript-2n2a</guid>
      <description>&lt;p&gt;Air quality is becoming a critical health concern worldwide. Whether you're building a weather app, a health tracker, or a smart home dashboard — real-time air quality data makes your app more valuable.&lt;/p&gt;

&lt;p&gt;In this tutorial, I'll show you how to build a live air quality dashboard using vanilla JavaScript and the &lt;a href="https://rapidapi.com/twohundredok-twohundredok-default/api/air-quality-index2" rel="noopener noreferrer"&gt;Air Quality Index API&lt;/a&gt; on RapidAPI.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We're Building
&lt;/h2&gt;

&lt;p&gt;A dashboard that shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Current AQI (Air Quality Index) for any city&lt;/li&gt;
&lt;li&gt;Pollutant breakdown (PM2.5, PM10, O3, NO2, SO2, CO)&lt;/li&gt;
&lt;li&gt;Health recommendations based on current conditions&lt;/li&gt;
&lt;li&gt;Color-coded risk levels (Good → Hazardous)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/placeholder-screenshot.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/placeholder-screenshot.png" alt="AQI Dashboard Demo" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Basic JavaScript knowledge&lt;/li&gt;
&lt;li&gt;A free RapidAPI account (&lt;a href="https://rapidapi.com/auth/sign-up" rel="noopener noreferrer"&gt;sign up here&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;A text editor and browser&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Get Your API Key (1 minute)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go to the &lt;a href="https://rapidapi.com/twohundredok-twohundredok-default/api/air-quality-index2" rel="noopener noreferrer"&gt;Air Quality Index API&lt;/a&gt; on RapidAPI&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Subscribe to Test&lt;/strong&gt; and select the &lt;strong&gt;Free plan&lt;/strong&gt; (100 requests/day)&lt;/li&gt;
&lt;li&gt;Copy your &lt;code&gt;X-RapidAPI-Key&lt;/code&gt; from the code snippets section&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step 2: Build the HTML (5 minutes)
&lt;/h2&gt;

&lt;p&gt;Create an &lt;code&gt;index.html&lt;/code&gt; file:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
html
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
&amp;lt;head&amp;gt;
  &amp;lt;meta charset="UTF-8"&amp;gt;
  &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
  &amp;lt;title&amp;gt;Air Quality Dashboard&amp;lt;/title&amp;gt;
  &amp;lt;style&amp;gt;
    * { margin: 0; padding: 0; box-sizing: border-box; }
    body {
      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
      background: #f0f2f5; padding: 2rem;
    }
    .dashboard {
      max-width: 600px; margin: 0 auto;
    }
    h1 { text-align: center; margin-bottom: 1.5rem; font-size: 1.5rem; }
    .search {
      display: flex; gap: 8px; margin-bottom: 1.5rem;
    }
    .search input {
      flex: 1; padding: 10px 14px; border: 1px solid #ddd;
      border-radius: 8px; font-size: 1rem;
    }
    .search button {
      padding: 10px 20px; background: #2563eb; color: white;
      border: none; border-radius: 8px; font-size: 1rem; cursor: pointer;
    }
    .search button:hover { background: #1d4ed8; }
    .aqi-card {
      background: white; border-radius: 12px; padding: 2rem;
      box-shadow: 0 2px 10px rgba(0,0,0,0.1); text-align: center;
      margin-bottom: 1.5rem;
    }
    .aqi-value {
      font-size: 4rem; font-weight: 800; line-height: 1;
    }
    .aqi-label {
      font-size: 1.25rem; font-weight: 600; margin-top: 0.5rem;
    }
    .aqi-advice {
      color: #666; margin-top: 0.75rem; font-size: 0.95rem;
      line-height: 1.4;
    }
    .pollutants {
      display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px;
    }
    .pollutant {
      background: white; border-radius: 10px; padding: 1rem;
      box-shadow: 0 1px 4px rgba(0,0,0,0.08); text-align: center;
    }
    .pollutant .name { font-size: 0.75rem; color: #999; text-transform: uppercase; }
    .pollutant .value { font-size: 1.5rem; font-weight: 700; margin: 4px 0; }
    .pollutant .unit { font-size: 0.7rem; color: #999; }
    .hidden { display: none; }
  &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
  &amp;lt;div class="dashboard"&amp;gt;
    &amp;lt;h1&amp;gt;Air Quality Dashboard&amp;lt;/h1&amp;gt;
    &amp;lt;div class="search"&amp;gt;
      &amp;lt;input type="text" id="city" placeholder="Enter city name..." value="London"&amp;gt;
      &amp;lt;button id="searchBtn"&amp;gt;Check AQI&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div id="results" class="hidden"&amp;gt;
      &amp;lt;div class="aqi-card" id="aqiCard"&amp;gt;
        &amp;lt;div class="aqi-value" id="aqiValue"&amp;gt;--&amp;lt;/div&amp;gt;
        &amp;lt;div class="aqi-label" id="aqiLabel"&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div class="aqi-advice" id="aqiAdvice"&amp;gt;&amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
      &amp;lt;div class="pollutants" id="pollutants"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;script src="app.js"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>api</category>
    </item>
    <item>
      <title>Build a UV Exposure Tracker in 15 Minutes with JavaScript</title>
      <dc:creator>200 OK</dc:creator>
      <pubDate>Tue, 10 Mar 2026 22:10:55 +0000</pubDate>
      <link>https://forem.com/200_ok_twohundred/build-a-uv-exposure-tracker-in-15-minutes-with-javascript-5f5n</link>
      <guid>https://forem.com/200_ok_twohundred/build-a-uv-exposure-tracker-in-15-minutes-with-javascript-5f5n</guid>
      <description>&lt;p&gt;Skin cancer is the most common cancer worldwide, yet most apps still ignore UV data. Whether you're building a health tracker, a weather app, or a fitness platform — real-time UV index data with personalized safe exposure times makes your app genuinely useful.&lt;/p&gt;

&lt;p&gt;In this tutorial, I'll show you how to build a UV exposure tracker using vanilla JavaScript and the &lt;a href="https://rapidapi.com/twohundredok-twohundredok-default/api/uv-index-sun-exposure" rel="noopener noreferrer"&gt;UV Index &amp;amp; Sun Exposure API&lt;/a&gt; on RapidAPI.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We're Building
&lt;/h2&gt;

&lt;p&gt;A tracker that shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Current UV index with color-coded risk level&lt;/li&gt;
&lt;li&gt;Health advice (sunscreen, shade, protective clothing)&lt;/li&gt;
&lt;li&gt;Safe exposure time personalized by Fitzpatrick skin type&lt;/li&gt;
&lt;li&gt;Vitamin D synthesis estimate&lt;/li&gt;
&lt;li&gt;3-day hourly UV forecast chart&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;No frameworks.&lt;/strong&gt; Just HTML, CSS, and vanilla JavaScript.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A free RapidAPI account (&lt;a href="https://rapidapi.com/auth/sign-up" rel="noopener noreferrer"&gt;sign up here&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Subscribe to the &lt;a href="https://rapidapi.com/twohundredok-twohundredok-default/api/uv-index-sun-exposure" rel="noopener noreferrer"&gt;UV Index &amp;amp; Sun Exposure API&lt;/a&gt; (free tier — 100 requests/day)&lt;/li&gt;
&lt;li&gt;A text editor and browser&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Set Up the HTML
&lt;/h2&gt;

&lt;p&gt;Create an &lt;code&gt;index.html&lt;/code&gt; file:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
html
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
&amp;lt;head&amp;gt;
  &amp;lt;meta charset="UTF-8"&amp;gt;
  &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
  &amp;lt;title&amp;gt;UV Exposure Tracker&amp;lt;/title&amp;gt;
  &amp;lt;style&amp;gt;
    * { margin: 0; padding: 0; box-sizing: border-box; }
    body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: #0f172a; color: #e2e8f0; min-height: 100vh; padding: 2rem; }
    .container { max-width: 640px; margin: 0 auto; }
    h1 { font-size: 1.5rem; margin-bottom: 1.5rem; text-align: center; }

    .controls { display: flex; gap: 0.5rem; margin-bottom: 1.5rem; flex-wrap: wrap; }
    .controls input, .controls select, .controls button { padding: 0.6rem 1rem; border-radius: 8px; border: 1px solid #334155; background: #1e293b; color: #e2e8f0; font-size: 0.9rem; }
    .controls input { flex: 1; min-width: 80px; }
    .controls button { background: #f59e0b; color: #0f172a; font-weight: 600; border: none; cursor: pointer; }
    .controls button:hover { background: #d97706; }

    .uv-card { background: #1e293b; border-radius: 12px; padding: 1.5rem; margin-bottom: 1rem; }
    .uv-main { display: flex; align-items: center; gap: 1.5rem; margin-bottom: 1rem; }
    .uv-circle { width: 100px; height: 100px; border-radius: 50%; display: flex; flex-direction: column; align-items: center; justify-content: center; font-weight: 700; }
    .uv-value { font-size: 2rem; line-height: 1; }
    .uv-label { font-size: 0.75rem; margin-top: 4px; text-transform: uppercase; }
    .uv-details h3 { font-size: 1.1rem; margin-bottom: 0.25rem; }
    .uv-details p { font-size: 0.85rem; color: #94a3b8; line-height: 1.5; }

    .exposure-card { background: #1e293b; border-radius: 12px; padding: 1.5rem; margin-bottom: 1rem; }
    .exposure-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-top: 0.75rem; }
    .exposure-stat { background: #0f172a; border-radius: 8px; padding: 1rem; text-align: center; }
    .exposure-stat .value { font-size: 1.5rem; font-weight: 700; color: #f59e0b; }
    .exposure-stat .label { font-size: 0.75rem; color: #94a3b8; margin-top: 0.25rem; }

    .forecast-card { background: #1e293b; border-radius: 12px; padding: 1.5rem; }
    .forecast-bars { display: flex; align-items: flex-end; gap: 4px; height: 120px; margin-top: 1rem; }
    .forecast-bar { flex: 1; border-radius: 4px 4px 0 0; position: relative; min-width: 8px; }
    .forecast-bar .time { position: absolute; bottom: -18px; left: 50%; transform: translateX(-50%); font-size: 0.6rem; color: #64748b; white-space: nowrap; }

    .hidden { display: none; }
    .loading { text-align: center; padding: 2rem; color: #64748b; }
  &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
  &amp;lt;div class="container"&amp;gt;
    &amp;lt;h1&amp;gt;UV Exposure Tracker&amp;lt;/h1&amp;gt;
    &amp;lt;div class="controls"&amp;gt;
      &amp;lt;input type="text" id="lat" placeholder="Latitude" value="40.7128"&amp;gt;
      &amp;lt;input type="text" id="lon" placeholder="Longitude" value="-74.0060"&amp;gt;
      &amp;lt;select id="skinType"&amp;gt;
        &amp;lt;option value="1"&amp;gt;Type I — Very fair&amp;lt;/option&amp;gt;
        &amp;lt;option value="2" selected&amp;gt;Type II — Fair&amp;lt;/option&amp;gt;
        &amp;lt;option value="3"&amp;gt;Type III — Medium&amp;lt;/option&amp;gt;
        &amp;lt;option value="4"&amp;gt;Type IV — Olive&amp;lt;/option&amp;gt;
        &amp;lt;option value="5"&amp;gt;Type V — Brown&amp;lt;/option&amp;gt;
        &amp;lt;option value="6"&amp;gt;Type VI — Very dark&amp;lt;/option&amp;gt;
      &amp;lt;/select&amp;gt;
      &amp;lt;button id="checkBtn"&amp;gt;Check UV&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div id="results" class="hidden"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div id="loading" class="loading hidden"&amp;gt;Loading UV data...&amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;script src="app.js"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>api</category>
    </item>
    <item>
      <title>Build a Currency Converter in 10 Minutes with JavaScript</title>
      <dc:creator>200 OK</dc:creator>
      <pubDate>Tue, 10 Mar 2026 22:10:54 +0000</pubDate>
      <link>https://forem.com/200_ok_twohundred/build-a-currency-converter-in-10-minutes-with-javascript-3jbb</link>
      <guid>https://forem.com/200_ok_twohundred/build-a-currency-converter-in-10-minutes-with-javascript-3jbb</guid>
      <description>&lt;p&gt;Ever needed to add currency conversion to your app? Whether you're building an e-commerce platform, a travel app, or a finance dashboard — you'll need reliable exchange rates.&lt;/p&gt;

&lt;p&gt;In this tutorial, I'll show you how to build a working currency converter in under 10 minutes using vanilla JavaScript and the &lt;a href="https://rapidapi.com/twohundredok-twohundredok-default/api/currency-exchange-rates13" rel="noopener noreferrer"&gt;Currency Exchange Rates API&lt;/a&gt; on RapidAPI.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We're Building
&lt;/h2&gt;

&lt;p&gt;A simple web-based currency converter that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Converts between 31 major currencies&lt;/li&gt;
&lt;li&gt;Shows real-time rates from the European Central Bank (ECB)&lt;/li&gt;
&lt;li&gt;Updates instantly when you change the amount or currency&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/placeholder-screenshot.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/placeholder-screenshot.png" alt="Currency Converter Demo" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Basic JavaScript knowledge&lt;/li&gt;
&lt;li&gt;A free RapidAPI account (&lt;a href="https://rapidapi.com/auth/sign-up" rel="noopener noreferrer"&gt;sign up here&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;A text editor and browser&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Get Your API Key (1 minute)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Head to the &lt;a href="https://rapidapi.com/twohundredok-twohundredok-default/api/currency-exchange-rates13" rel="noopener noreferrer"&gt;Currency Exchange Rates API&lt;/a&gt; on RapidAPI&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Subscribe to Test&lt;/strong&gt; and select the &lt;strong&gt;Free plan&lt;/strong&gt; (100 requests/day — plenty for development)&lt;/li&gt;
&lt;li&gt;Copy your &lt;code&gt;X-RapidAPI-Key&lt;/code&gt; from the code snippets section&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step 2: Build the HTML (3 minutes)
&lt;/h2&gt;

&lt;p&gt;Create an &lt;code&gt;index.html&lt;/code&gt; file:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
html
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
&amp;lt;head&amp;gt;
  &amp;lt;meta charset="UTF-8"&amp;gt;
  &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
  &amp;lt;title&amp;gt;Currency Converter&amp;lt;/title&amp;gt;
  &amp;lt;style&amp;gt;
    * { margin: 0; padding: 0; box-sizing: border-box; }
    body {
      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
      display: flex; justify-content: center; align-items: center;
      min-height: 100vh; background: #f0f2f5;
    }
    .converter {
      background: white; padding: 2rem; border-radius: 12px;
      box-shadow: 0 2px 10px rgba(0,0,0,0.1); width: 400px;
    }
    h1 { font-size: 1.5rem; margin-bottom: 1.5rem; text-align: center; }
    .field { margin-bottom: 1rem; }
    label { display: block; font-size: 0.875rem; color: #666; margin-bottom: 4px; }
    input, select {
      width: 100%; padding: 10px 12px; border: 1px solid #ddd;
      border-radius: 8px; font-size: 1rem;
    }
    .result {
      text-align: center; padding: 1.5rem; background: #f8f9fa;
      border-radius: 8px; margin-top: 1rem;
    }
    .result .amount { font-size: 2rem; font-weight: 700; color: #2563eb; }
    .result .rate { font-size: 0.875rem; color: #666; margin-top: 4px; }
    .swap-btn {
      display: block; margin: 0.5rem auto; background: none;
      border: 1px solid #ddd; border-radius: 50%; width: 36px;
      height: 36px; cursor: pointer; font-size: 1.2rem;
    }
    .swap-btn:hover { background: #f0f2f5; }
  &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
  &amp;lt;div class="converter"&amp;gt;
    &amp;lt;h1&amp;gt;💱 Currency Converter&amp;lt;/h1&amp;gt;
    &amp;lt;div class="field"&amp;gt;
      &amp;lt;label&amp;gt;Amount&amp;lt;/label&amp;gt;
      &amp;lt;input type="number" id="amount" value="100" min="0" step="0.01"&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class="field"&amp;gt;
      &amp;lt;label&amp;gt;From&amp;lt;/label&amp;gt;
      &amp;lt;select id="fromCurrency"&amp;gt;&amp;lt;/select&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;button class="swap-btn" id="swap" title="Swap currencies"&amp;gt;⇅&amp;lt;/button&amp;gt;
    &amp;lt;div class="field"&amp;gt;
      &amp;lt;label&amp;gt;To&amp;lt;/label&amp;gt;
      &amp;lt;select id="toCurrency"&amp;gt;&amp;lt;/select&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class="result"&amp;gt;
      &amp;lt;div class="amount" id="resultAmount"&amp;gt;—&amp;lt;/div&amp;gt;
      &amp;lt;div class="rate" id="resultRate"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;script src="app.js"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>api</category>
    </item>
    <item>
      <title>5 Free APIs Every Developer Should Know About in 2026</title>
      <dc:creator>200 OK</dc:creator>
      <pubDate>Mon, 09 Mar 2026 09:28:04 +0000</pubDate>
      <link>https://forem.com/200_ok_twohundred/5-free-apis-every-developer-should-know-about-in-2026-4ape</link>
      <guid>https://forem.com/200_ok_twohundred/5-free-apis-every-developer-should-know-about-in-2026-4ape</guid>
      <description>&lt;p&gt;Building side projects? You know the pain — most useful data APIs either cost $50+/month or have laughably small free tiers.&lt;/p&gt;

&lt;p&gt;I built a suite of 5 free APIs for the data developers actually need. Each one has a &lt;strong&gt;free tier of 100 requests/day&lt;/strong&gt; (enough for prototyping and small apps), and paid tiers starting at $9.99/month if you need more.&lt;/p&gt;

&lt;p&gt;All are hosted on RapidAPI with full documentation and code examples.&lt;/p&gt;




&lt;h3&gt;
  
  
  1. Currency Exchange Rate API
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What:&lt;/strong&gt; Real-time and historical exchange rates for 31 currencies, sourced from the European Central Bank.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Endpoints:&lt;/strong&gt; Latest rates, historical (back to 1999!), currency conversion, time series, supported currencies list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it's different:&lt;/strong&gt; Most currency APIs charge $15-50/month for basic access. This one is free for 100 req/day and $9.99/month for production use. Sub-50ms response times on Cloudflare's edge network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use it for:&lt;/strong&gt; Currency converters, multi-currency e-commerce, finance dashboards, travel apps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://rapidapi.com/twohundredok-twohundredok-default/api/currency-exchange-rates13" rel="noopener noreferrer"&gt;Currency Exchange Rate API on RapidAPI&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://currency-exchange-rates13.p.rapidapi.com/rates/latest&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;x-rapidapi-key&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;YOUR_KEY&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;x-rapidapi-host&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;currency-exchange-rates13.p.rapidapi.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;rates&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;USD&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 1.0842&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  2. Air Quality Index (AQI) API
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What:&lt;/strong&gt; Real-time air quality data for any city — AQI score, individual pollutant readings (PM2.5, PM10, O3, NO2, SO2, CO), and health recommendations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Endpoints:&lt;/strong&gt; Current AQI by city, city pollution rankings, historical data, health advice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it's different:&lt;/strong&gt; Most AQI APIs just give you a number. This one includes &lt;strong&gt;health recommendations&lt;/strong&gt; in every response (e.g., "Sensitive groups should limit outdoor exertion") and lets you rank cities by pollution levels.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use it for:&lt;/strong&gt; Weather apps, health trackers, smart home dashboards, data visualization projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://rapidapi.com/twohundredok-twohundredok-default/api/air-quality-index2" rel="noopener noreferrer"&gt;Air Quality Index API on RapidAPI&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://air-quality-index2.p.rapidapi.com/current&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;querystring&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;city&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;London&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;x-rapidapi-key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;x-rapidapi-host&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;air-quality-index2.p.rapidapi.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;querystring&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  3. UV Index &amp;amp; Sun Exposure API
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What:&lt;/strong&gt; Current UV index, 7-day hourly forecast, and — the unique part — &lt;strong&gt;safe sun exposure times calculated by Fitzpatrick skin type&lt;/strong&gt; with vitamin D synthesis estimates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Endpoints:&lt;/strong&gt; Current UV, forecast, safe exposure calculator, vitamin D estimates, historical UV data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it's different:&lt;/strong&gt; No other UV API calculates personalized safe exposure times for all 6 Fitzpatrick skin types or estimates vitamin D production. It's health data, not just weather data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use it for:&lt;/strong&gt; Health/fitness apps, travel planners, dermatology tools, outdoor sports platforms.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://rapidapi.com/twohundredok-twohundredok-default/api/uv-index-sun-exposure" rel="noopener noreferrer"&gt;UV Index &amp;amp; Sun Exposure API on RapidAPI&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; GET &lt;span class="s2"&gt;"https://uv-index-sun-exposure.p.rapidapi.com/uv/current?lat=40.7128&amp;amp;lng=-74.006"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"x-rapidapi-key: YOUR_KEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"x-rapidapi-host: uv-index-sun-exposure.p.rapidapi.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  4. US Fuel &amp;amp; Energy Price API
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What:&lt;/strong&gt; Gas prices (regular, midgrade, premium, diesel) and electricity rates (residential, commercial, industrial) for all 50 US states. Historical data back to 1990.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Endpoints:&lt;/strong&gt; Current gas prices by state, national averages, electricity rates by sector, historical trends.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it's different:&lt;/strong&gt; 35+ years of government-sourced data (EIA) in one API. No other free-tier API combines gas and electricity data. Great for data-heavy projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use it for:&lt;/strong&gt; Fleet management, travel apps, real estate (utility cost comparisons), EV cost calculators, data journalism.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://rapidapi.com/twohundredok-twohundredok-default/api/us-fuel-energy-prices" rel="noopener noreferrer"&gt;US Fuel &amp;amp; Energy Price API on RapidAPI&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://us-fuel-energy-prices.p.rapidapi.com/gas/prices/state/CA&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;x-rapidapi-key&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;YOUR_KEY&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;x-rapidapi-host&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;us-fuel-energy-prices.p.rapidapi.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`California regular gas: $&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;regular&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/gallon`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  5. Sales Tax &amp;amp; VAT Validation API &lt;em&gt;(Coming Soon)&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What:&lt;/strong&gt; US state/local sales tax rates, EU VAT rates, and Canadian GST/HST/PST — plus EU VAT number validation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use it for:&lt;/strong&gt; E-commerce checkout, invoicing, tax compliance, SaaS billing with regional tax handling.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Listing going live soon — follow Two Hundred OK on RapidAPI to get notified.&lt;/em&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Why I Built These
&lt;/h3&gt;

&lt;p&gt;I kept running into the same problem: I needed simple data for a side project and every API was either expensive, unreliable, or had a 10-request/day free tier. So I built a suite of APIs on Cloudflare Workers (global edge, fast responses) with genuinely useful free tiers.&lt;/p&gt;

&lt;p&gt;All 5 APIs share the same design philosophy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Generous free tier&lt;/strong&gt; (100 req/day — enough to prototype and run small apps)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Simple, consistent JSON responses&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Official data sources&lt;/strong&gt; (ECB, EIA, government APIs)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fast&lt;/strong&gt; (Cloudflare edge, sub-100ms globally)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you try any of them, I'd love to hear what you're building. Drop a comment!&lt;/p&gt;

</description>
      <category>api</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>freecodecamp</category>
    </item>
  </channel>
</rss>
