Semver Range Checker
Pricing
Pay per event
Semver Range Checker
Bulk-check version strings against semver range expressions. Pass versions + a range like ^1.2.0 or >=2.0.0 <3.0.0, get pass/fail per version and the latest satisfying version. Zero proxy cost.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
What does Semver Range Checker do?
Semver Range Checker evaluates a list of version strings against a semver range expression — ^1.2.0, ~2.3, >=1.0.0 <3.0.0, 1.x, * — and tells you which versions satisfy or fail the range. It also returns the latest satisfying version across the entire input list.
Pure computation: no web requests, no proxies, no credentials needed. Submit your versions and range, get results in seconds. Export to JSON, CSV, or Excel.
Try it directly on the Apify Store — no sign-up required for a free trial.
Who is Semver Range Checker for?
DevOps engineers and release managers who need to audit which package versions in their dependency graph are compatible with an upgrade target — without manually running npm semver one version at a time.
Backend developers and library maintainers who want to validate that a list of versions gathered from user reports, analytics, or changelogs are covered by a given version constraint before publishing a breaking change.
QA and automation engineers running release pipelines that need to programmatically check version compatibility as part of a CI gate or webhook-triggered workflow.
Security teams auditing whether deployed versions of a dependency fall inside or outside a patched range (e.g., >=2.4.1 <3.0.0) across many environments.
Why use Semver Range Checker?
- ✅ No code required — paste versions and range, click Run
- ✅ Bulk processing — check hundreds of versions in one run
- ✅ Supports all semver range syntax — caret (
^), tilde (~), hyphen ranges, comparator sets, wildcards (x,*) - ✅ Prerelease support — opt in to include prerelease versions (e.g.,
2.0.0-beta.1) in range matching - ✅ Latest satisfying version — each output row includes the highest version from your list that satisfies the range
- ✅ Graceful error handling — invalid version strings are flagged in the output without crashing the run
- ✅ Zero proxy cost — pure computation, no bandwidth charges
- ✅ Integrates with 5,000+ apps via Zapier, Make, and the Apify API
What data can you extract?
| Field | Type | Description |
|---|---|---|
version | string | The input version string (cleaned/normalized) |
satisfies | boolean | Whether this version satisfies the given range |
latestSatisfying | string | null | The highest version from the input list that satisfies the range |
error | string | null | Parse error message if the version string was invalid; null otherwise |
How much does it cost to check semver ranges?
Semver Range Checker uses pay-per-event (PPE) pricing — you pay only for what you use.
| Event | FREE | BRONZE | SILVER | GOLD | PLATINUM | DIAMOND |
|---|---|---|---|---|---|---|
| Run started | $0.005 | $0.00475 | $0.00425 | $0.00375 | $0.003 | $0.0025 |
| Per version checked | $0.0001 | $0.00009 | $0.00008 | $0.000065 | $0.00005 | $0.00004 |
Real-world cost examples (FREE tier):
| Use case | Versions | Estimated cost |
|---|---|---|
| Quick spot-check | 10 | ~$0.006 |
| Dependency audit | 100 versions | ~$0.015 |
| Large release gate | 1,000 versions | ~$0.105 |
Free plan: Apify gives every new account $5 in free credits. That's enough to check ~47,000 versions for free.
Volume discounts apply automatically at higher Apify plan tiers — the per-version price drops to $0.00004 at DIAMOND (60% off FREE tier pricing).
How to check semver ranges
- Go to Semver Range Checker on Apify Store
- Click Try for free
- In the Version strings field, enter your version list (one per line or as a JSON array)
- In the Semver range expression field, enter your range (e.g.,
^2.0.0) - Toggle Include prerelease versions if your list includes prerelease strings
- Click Start — results appear in seconds
- Download your results as JSON, CSV, or Excel from the Dataset tab
Example: Check which of your deployed versions are covered by a security patch
Input:
{"versions": ["1.8.0", "1.9.2", "2.0.0", "2.1.3", "3.0.0-rc.1"],"range": ">=1.9.0 <3.0.0"}
Example: Find the latest 1.x release in a list
Input:
{"versions": ["1.0.0", "1.4.2", "1.9.9", "2.0.0"],"range": "1.x"}
Example: Include prerelease versions in matching
Input:
{"versions": ["2.0.0-alpha.1", "2.0.0-beta.2", "2.0.0"],"range": ">=2.0.0-alpha.0 <2.0.0","includePrerelease": true}
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
versions | array of strings | ✅ Yes | — | List of semver version strings to evaluate. Each must be a valid semver version (e.g., 1.2.3, 2.0.0-beta.1). |
range | string | ✅ Yes | — | Semver range expression (e.g., ^1.2.0, ~2.3, >=1.0.0 <3.0.0, 1.x, *). |
includePrerelease | boolean | No | false | When true, prerelease versions are included in range matching. By default, prereleases are excluded unless the range itself specifies a prerelease. |
Output examples
A run with range: "^1.0.0" and versions ["1.0.0","1.2.3","2.0.0","0.9.9","1.0.0-beta.1"]:
[{ "version": "1.0.0", "satisfies": true, "latestSatisfying": "1.2.3", "error": null },{ "version": "1.2.3", "satisfies": true, "latestSatisfying": "1.2.3", "error": null },{ "version": "2.0.0", "satisfies": false, "latestSatisfying": "1.2.3", "error": null },{ "version": "0.9.9", "satisfies": false, "latestSatisfying": "1.2.3", "error": null },{ "version": "1.0.0-beta.1", "satisfies": false, "latestSatisfying": "1.2.3", "error": null }]
Invalid version strings produce an error row and are not charged:
[{ "version": "not-a-version", "satisfies": null, "latestSatisfying": null, "error": "Invalid semver version: \"not-a-version\"" }]
Tips for best results
- 🔢 Start small — test with 5–10 representative versions first to verify your range expression behaves as expected before submitting hundreds
- 📝 Quote complex ranges — ranges with spaces like
>=1.0.0 <2.0.0or1.0.0 - 2.0.0must be a single string in the JSON input field; don't split them into separate entries - 🔖 Prerelease gotcha — by default
^1.0.0does NOT match1.1.0-beta.1even though it's "above"1.0.0. Enable Include prerelease versions or use an explicit prerelease range to opt in - 📦 NPM-style ranges work — the underlying library is
semver, the same one used by npm, so any range valid inpackage.jsonworks here - 🗂️ Batch large audits — for auditing thousands of versions, set a generous
timeoutSecsin the advanced options (default is 60 s — more than enough for 10,000 versions)
Integrations
Semver Range Checker → Slack alert
Schedule a daily run that checks whether any of your microservices' deployed versions fall outside your supported range. Use a webhook to post a Slack message when any satisfies: false rows appear.
Semver Range Checker → Google Sheets
Run the checker and use Apify's Google Sheets integration to export results directly into a spreadsheet. Highlight rows where satisfies is false using Sheets conditional formatting for instant visibility.
Semver Range Checker → Make (Integromat) CI gate Trigger a Make scenario from your CI pipeline via HTTP request. Pass the list of installed dependency versions as input. If any version fails the range, use Make's Router to send an alert email and block the merge.
Scheduled version compliance monitoring Use Apify's Schedules to run the checker nightly against a static list of supported clients or deployment targets. Build a dashboard in Google Data Studio using the Dataset API endpoint as the data source.
Semver Range Checker → Zapier → PagerDuty Connect via Zapier to trigger a PagerDuty incident automatically if a version audit finds out-of-range deployments — ideal for zero-day vulnerability response workflows.
Using the Apify API
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('automation-lab/semver-range-checker').call({versions: ['1.0.0', '1.2.3', '2.0.0', '3.0.0'],range: '^1.0.0',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient(token='YOUR_API_TOKEN')run = client.actor('automation-lab/semver-range-checker').call(run_input={'versions': ['1.0.0', '1.2.3', '2.0.0', '3.0.0'],'range': '^1.0.0',})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~semver-range-checker/runs?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"versions": ["1.0.0", "1.2.3", "2.0.0", "3.0.0"],"range": "^1.0.0"}'
Use with AI agents via MCP
Semver Range Checker is available as a tool for AI assistants that support the Model Context Protocol (MCP).
Add the Apify MCP server to your AI client — this gives you access to all Apify actors, including this one:
Setup for Claude Code
$claude mcp add --transport http apify "https://mcp.apify.com"
Setup for Claude Desktop, Cursor, or VS Code
Add this to your MCP config file:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com"}}}
Your AI assistant will use OAuth to authenticate with your Apify account on first use.
Example prompts
Once connected, try asking your AI assistant:
- "Use automation-lab/semver-range-checker to check which of these versions satisfy the range
>=2.0.0 <3.0.0: 1.9.9, 2.0.0, 2.4.1, 3.0.0-rc.1" - "I have a list of deployed microservice versions — check which ones are NOT covered by our support window
^1.8.0" - "Find the latest version from this list that satisfies
~1.4: 1.4.0, 1.4.5, 1.5.0, 1.6.2"
Learn more in the Apify MCP documentation.
Is it legal to use Semver Range Checker?
Yes — Semver Range Checker performs pure local computation on the data you provide as input. It makes no web requests, accesses no external APIs, and collects no third-party data. All processing happens within the Apify Actor runtime on your input.
This actor does not scrape websites, does not process personal data, and is not subject to robots.txt or Terms of Service restrictions. Use it freely in any context.
FAQ
How fast is it? Extremely fast — semver comparison is pure CPU work. A list of 1,000 versions typically completes in under 2 seconds. The 60-second default timeout is more than sufficient for any realistic input.
How much does it cost for 100 versions? About $0.015 — a $0.005 start charge plus 100 × $0.0001 = $0.010 per-version fee. Free plan covers ~47,000 versions with the $5 welcome credit.
Does it support npm-style ranges like 1.2.x or latest?
It supports all range formats from the npm semver package: caret, tilde, hyphen ranges, comparator sets, wildcards, and *. The special tag latest is not a valid semver range — use * to match any version.
Why does my prerelease version not match even though it looks like it should?
By default, prerelease versions (e.g., 2.0.0-beta.1) are excluded from range matching even when they fall within the numeric bounds of the range. Enable the Include prerelease versions option or include a prerelease tag in the range itself (e.g., >=2.0.0-alpha.0 <2.0.0).
Why is latestSatisfying null?
This means none of the versions in your list satisfy the range. Check that your range expression is correct and that you haven't accidentally excluded prerelease versions.
What happens with invalid version strings?
Invalid strings (e.g., "not-a-version", "v2.x") produce an output row with satisfies: null and an error message. They are not charged and do not affect results for valid versions.
Other developer tools from automation-lab
Looking for more developer utilities on Apify Store?
- Semver Parser — Parse, validate, sort, and compare semantic version strings with full range checking
- HTTP Status Checker — Bulk-check HTTP status codes and redirect chains for any list of URLs
- Curl to Code Converter — Convert cURL commands to Python, Node.js, PHP, Go, and more
- Unicode Text Inspector — Inspect Unicode codepoints, categories, and hidden characters in text strings
- Fake Test Data Generator — Generate realistic test datasets with names, emails, addresses, and more
- Domain Availability Checker — Check WHOIS and registration status for domain names in bulk
- Color Contrast Checker (WCAG) — Validate color pairs against WCAG 2.1 AA/AAA accessibility standards
- JSON Schema Generator — Generate JSON Schema from sample data objects automatically