DEV Community

Mario
Mario

Posted on

i was tired of every API having a different JSON shape so i fixed it

every project i build that pulls in external data ends up with the same problem: the APIs all return different shapes.

openweathermap gives you main.temp in kelvin inside a nested object. coingecko gives you current_price in a flat map. newsapi gives you publishedAt in one format. the guardian gives you webPublicationDate in another. you write an adapter for each one, every time, forever.

i got tired of it. so i built sprime — a unified API gateway that normalizes all of this into one consistent JSON schema.

what it does

one API key, 15+ endpoints, everything comes back in the same shape:

{
  "status": "success",
  "data": { ... },
  "source": "open-meteo",
  "timestamp": "2026-02-23T..."
}
Enter fullscreen mode Exit fullscreen mode

endpoints available:

  • weather (city name or lat/lon, temp unit conversion, enriched mode with UV/sunrise/sunset)
  • crypto price, trending coins, market cap rankings, historical sparklines
  • news headlines (7 categories, optional sentiment analysis)
  • forex rates (ECB data)
  • air quality (AQI, PM2.5, ozone)
  • geocoding
  • IP lookup
  • timezone info
  • public holidays (100+ countries)
  • batch requests (up to 10 in one call)
  • webhooks for price/weather/news alerts (Pro)
  • /v1/context which pulls weather + crypto + news in a single round trip

what it handles for you

  • provider failover: if the primary source is down, it tries the next one automatically
  • caching: responses are cached in memory, cache age/TTL exposed in response headers
  • consistent errors: always { "error": "..." }, never an HTML page or stack trace
  • field filtering: ?fields=temp,windspeed to reduce payload size

pricing

free tier is 500 req/day, no credit card. paid plans start at $5/mo for 5k req/day and 15+ endpoints.

the whole thing runs on GCP free tier so it stays cheap to operate and i can keep the free plan around indefinitely.

try it

live demo on the homepage with no signup: sprime.us

docs: sprime.us/docs.html

would genuinely appreciate feedback on the response schema, the endpoint coverage, or anything that feels off. building this in public and iterating based on what people actually need.

Top comments (1)

Collapse
 
bicibg profile image
Bugra Ergin

Love the consistent envelope approach. I built something similar with apixies.io (utility APIs rather than data aggregation) and the unified JSON shape is honestly the feature people appreciate most. The batch request endpoint is a nice touch. Good luck with the launch!