
JWT Decoder & Verifier
hipersoft/jwt-decode-verify
Decode JWT header and payload, and optionally verify the signature and expiry against a secret or JWKS. Debug and audit auth tokens in bulk.
Total users
2Monthly users
1Total runs
70Per jwt processed
$0.001Last rebuilt
Oct 26, 2026Overview
Decode JWT header and payload, and optionally verify the signature and expiry — in bulk. Debug auth tokens, inspect claims, and audit expiry across many tokens at once, with support for HMAC secrets and JWKS-based verification.
What it does
- Decodes the header and payload of each JWT (claims, issuer, subject, audience, timestamps).
- Flags expired tokens.
- Optionally verifies the signature against a secret / public key, or a JWKS endpoint (RS256/ES256).
Use cases
- Backend debugging — inspect what a token actually contains.
- Auth audits — check claims and expiry across many tokens.
- Integration testing — verify tokens from an identity provider.
Input
{ "tokens": ["eyJhbGci..."], "secret": "", "jwksUri": "" }
| Field | Type | Description |
|---|---|---|
tokens |
array | JWTs to decode/verify. |
secret |
string | Optional HMAC secret or PEM public key. |
jwksUri |
string | Optional JWKS endpoint for RS/ES tokens. |
Output
{ "algorithm": "HS256", "issuer": "acme", "expiresAt": "2026-01-01T00:00:00.000Z", "expired": true, "signatureVerified": null, "valid": false, "payload": { "sub": "1234567890" } }
Output schema
| Field | Type | Description |
|---|---|---|
valid |
boolean | Signature verified AND not expired. |
expired |
boolean | Whether the token is past its exp. |
algorithm |
string | Signing algorithm. |
FAQ
Can I verify signatures? Yes — provide a secret/public key, or a jwksUri for provider-signed tokens.
Can I automate it? Yes — via integrations on the Apify platform and the Apify API.
Notes
Original clean-room implementation. Tokens are processed only to decode/verify them.
Input
| Field | Type | Description |
|---|---|---|
tokens requiredJWTs | array | One or more JSON Web Tokens to decode (and optionally verify). |
secretSecret / public key | string | Optional HMAC secret or PEM public key to verify the signature. Leave empty to only decode. |
jwksUriJWKS URL | string | Optional JWKS endpoint to fetch the signing key for RS256/ES256 tokens (uses the token's kid). |
API
curl -X POST "https://api.apify.com/v2/acts/hipersoft~jwt-decode-verify/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"tokens": [
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFkYSIsImlhdCI6MTUxNjIzOTAyMn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
]
}'from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("hipersoft/jwt-decode-verify").call(run_input={
"tokens": [
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFkYSIsImlhdCI6MTUxNjIzOTAyMn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('hipersoft/jwt-decode-verify').call({
"tokens": [
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFkYSIsImlhdCI6MTUxNjIzOTAyMn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
]
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Pricing
| Event | Price | Paid plans from |
|---|---|---|
| Jwt Processed Charged per item processed. | $0.001 | $0.0005 |
You pay only for what the run returns. Set a maximum cost per run and it stops cleanly at that limit.
Related scrapers
Google Autocomplete Keyword Scraper
Generate long-tail keyword ideas from Google Autocomplete: alphabet-soup, question and preposition expansions with relevance scores. Fast SEO keyword research, per country and language. Clean, no setup.
118 runs · 7 users · $0.0013 / keyword scrapedESPN Sports Scraper
Scrape live and past scores, teams, standings and news across NBA, NFL, MLB, NHL, EPL, La Liga and more via ESPN's public data. For sports analytics, betting and fantasy. No setup.
111 runs · 1 users · $0.001 / item scrapedStockTwits Scraper
Scrape StockTwits messages and retail Bullish/Bearish sentiment for any ticker in bulk (stocks, ETFs, crypto, forex). One row per message with body, author, timestamp, sentiment, likes and replies. Fast, reliable and account-free.
73 runs · 2 users · $0.0008 / message scrapedExchange Rates Scraper
Fetch live and historical foreign-exchange rates published by the European Central Bank: any base currency, any target symbols, plus full time series over a date range. Clean structured JSON, CSV or Excel for finance, invoicing, dashboards and n8n.
64 runs · 2 users · $0.0005 / rate scrapedCongress Stock Trades Scraper
Scrape U.S. Congress members' stock trades & financial disclosures: member, ticker, buy/sell, amount range and dates. One clean row per trade or filing as JSON, CSV or Excel.
62 runs · 1 users · $0.003 / item scrapedForexFactory Economic Calendar Scraper
Scrape the ForexFactory economic calendar — every high, medium and low-impact macro event with its release time, forecast, previous and actual values. Pull this week, this month, today or tomorrow, filter by impact or currency, and export clean rows as JSON, CSV or Excel.
50 runs · 2 users · $0.003 / event scrapedSend the site and the fields. We build it and you get it first.