AlternativeTo APIalternativeto.net ↗
Search apps, find software alternatives, and browse categories and platforms on AlternativeTo via a structured JSON API with 6 endpoints.
What is the AlternativeTo API?
The AlternativeTo API provides access to AlternativeTo's software directory through 6 endpoints, letting you search apps by keyword, retrieve detailed metadata for individual titles, and pull paginated lists of alternatives. The get_app_details endpoint returns fields like licenseCost, platforms, reviewCount, tagLine, and likes for any app slug, while get_app_alternatives supports filtering by platform and license type.
curl -X GET 'https://api.parse.bot/scraper/aa86e0de-4fa6-4bb5-b463-590678d77f76/search_apps?query=video-editor' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace alternativeto-net-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: AlternativeTo SDK — discover apps, compare alternatives, browse by category."""
from parse_apis.alternativeto_api import AlternativeTo, AppNotFound
client = AlternativeTo()
# Search for video editors — limit caps total items fetched.
for app in client.appsummaries.search(query="video-editor", limit=3):
print(app.name, app.likes)
# Drill into the first result's full details via .details()
summary = client.appsummaries.search(query="vlc", limit=1).first()
if summary:
detail = summary.details()
print(detail.name, detail.license_cost, detail.review_count)
# Browse alternatives for a known app using constructible access.
vlc = client.app(slug="vlc-media-player")
for alt in vlc.alternatives.list(platform="windows", limit=3):
print(alt.name, alt.description[:80])
# List available categories.
for cat in client.categories.list(limit=5):
print(cat.name, cat.slug)
# Browse apps in a category.
for app in client.appsummaries.browse(category="social", limit=3):
print(app.name, app.likes)
# Typed error handling for a nonexistent app.
try:
bad = client.app(slug="nonexistent-app-xyz-999")
bad.alternatives.list(limit=1).first()
except AppNotFound as exc:
print(f"App not found: {exc.app_slug}")
print("exercised: search / details / alternatives.list / categories.list / browse / AppNotFound")
Full-text search over AlternativeTo's app directory by name or keyword. Returns a list of matching apps with basic metadata. No pagination; returns up to ~15 results per query.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | The search query string (e.g. 'video-editor', 'note-taking', 'whatsapp'). |
{
"type": "object",
"fields": {
"apps": "array of app summary objects each containing id, name, slug, url, description, likes, tags",
"query": "string, the search query that was used"
},
"sample": {
"data": {
"apps": [
{
"id": "acdbd0e0-09fe-4745-afba-e609f1373b7f",
"url": "https://alternativeto.net/software/olive-video-editor/",
"name": "Olive Video Editor",
"slug": "olive-video-editor",
"tags": [],
"likes": 149,
"description": "Olive is a free non-linear video editor aiming to provide a fully-featured alternative to high-end professional video editing software."
}
],
"query": "video-editor"
},
"status": "success"
}
}About the AlternativeTo API
Search and Browse
The search_apps endpoint accepts a free-text query string and returns up to roughly 15 matching apps, each with an id, name, slug, url, description, likes, and tags. Slugs returned here are the input currency for other endpoints. browse_apps lets you page through the full directory or scope results to a specific category slug, and filter by platform and license — making it suitable for building curated software lists or category indexes.
App Detail and Alternatives
get_app_details accepts an app_slug and returns a richer object: a UUID id, full description, tagLine, licenseCost (e.g. Free, Paid, Freemium), reviewCount, and a platforms array where each element has platformType, name, and urlName. get_app_alternatives pages through competing tools for any given app, with optional platform and license filters and roughly 12 results per page.
Reference Lookups
Two enumeration endpoints anchor the filtering system. get_categories returns the full category list as name/slug pairs — valid values for browse_apps's category param. get_platforms returns every platform with its text display name, urlName filter slug, and an app count, so you know which platform values are populated before issuing a filtered query.
The AlternativeTo API is a managed, monitored endpoint for alternativeto.net — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when alternativeto.net changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official alternativeto.net API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a 'find alternatives to X' widget using
get_app_alternativesfiltered by platform and license type - Generate a software comparison table by calling
get_app_detailsfor multiple slugs to comparelicenseCost,reviewCount, andplatforms - Populate a category-based software directory by paging through
browse_appswith acategoryslug - Detect which platforms an app supports by reading the
platformsarray fromget_app_details - Identify open-source alternatives in a category by combining
browse_appswithlicense=opensource - Build an autocomplete or search feature for software names using
search_appskeyword queries - Enumerate all available categories and platforms using
get_categoriesandget_platformsto drive dynamic filter UIs
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does AlternativeTo have an official developer API?+
What does `get_app_alternatives` return, and how can I filter it?+
get_app_alternatives returns a paginated array of app summary objects (id, name, slug, url, description, likes, tags) for apps listed as alternatives to the given app_slug. You can narrow results using the platform param (e.g. windows, linux, android) and the license param (e.g. opensource, free, commercial). Page size is approximately 12 items; use the page param to iterate.Does the API return user reviews or review text for apps?+
get_app_details exposes reviewCount as an integer, but individual review content, reviewer names, and ratings text are not returned by any endpoint. You can fork this API on Parse and revise it to add a review-detail endpoint.Does `get_app_details` include pricing or version history data?+
licenseCost (a string such as Free, Paid, or Freemium) but does not include specific pricing tiers, version numbers, release dates, or changelogs. The API covers identity fields, platform support, description, likes, and review counts. You can fork it on Parse and revise to add a version or pricing endpoint if the source exposes that data.How do I get valid values for the `platform` and `category` filter params?+
get_platforms returns the full platform list with each entry's urlName field — use that value as the platform param in browse_apps and get_app_alternatives. Similarly, get_categories returns category slug values to pass as the category param in browse_apps. Calling these two endpoints first is the reliable way to avoid invalid filter values.