Download APIdownload.com ↗
Access CNET's software catalog via 7 endpoints. Search by keyword, browse by platform or category, and retrieve specs, ratings, and download links.
What is the Download API?
The Download.com API exposes 7 endpoints covering CNET's software catalog — letting you search by keyword, browse by platform or category, and retrieve full product details including technical specifications, user ratings, and download trigger URLs. The get_software_details endpoint returns a structured specs object, related_links, and a download_trigger_url per product. The search_software endpoint supports sorting by relevance, popularity, or release date across Windows, Mac, Android, iOS, and iPhone.
curl -X GET 'https://api.parse.bot/scraper/8e8c84dc-dba5-43b7-b883-fbad1cfeb84c/search_software?sort=relevance&query=vlc&platform=windows' \ -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 download-com-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: CNET Download SDK — search, browse, drill down into details."""
from parse_apis.CNET_Download_API import CnetDownload, Sort, Platform, Category, SoftwareNotFound
client = CnetDownload()
# Search for VLC media players, sorted by popularity
for item in client.software_summaries.search(query="vlc", sort=Sort.MOST_POPULAR, platform=Platform.WINDOWS, limit=3):
print(item.name, item.rating, item.license_type)
# Drill into full details for one result
summary = client.software_summaries.search(query="chrome", platform=Platform.WINDOWS, limit=1).first()
if summary:
detail = summary.details()
print(detail.name, detail.rating, detail.download_trigger_url)
for key, val in detail.specs.items():
print(key, val)
# Get download info from the detail page
if summary:
detail = summary.details()
dl = detail.download_info()
print(dl.trigger_url, dl.direct_download_link)
# Browse by category with an enum
for app in client.software_summaries.list_by_category(category=Category.BROWSERS, platform=Platform.WINDOWS, limit=5):
print(app.name, app.slug, app.platform)
# Handle not-found error on a direct lookup
try:
sw = client.softwares.get(url="https://download.cnet.com/nonexistent-app/3000-0000_0-00000000.html")
print(sw.name)
except SoftwareNotFound as exc:
print(f"Software not found: {exc.url}")
print("exercised: search / details / download_info / list_by_category / get")
Full-text search over CNET's software catalog. Returns up to 10 results per query matching title and description. Supports sorting by relevance, popularity, or release date. Platform scopes results to a single OS.
| Param | Type | Description |
|---|---|---|
| sort | string | Sort order for results. |
| queryrequired | string | Search term (e.g. 'vlc', 'chrome', 'antivirus'). |
| platform | string | Platform to search: windows, mac, android, ios, iphone. |
{
"type": "object",
"fields": {
"query": "string, the search term used",
"results": "array of software summary objects with name, slug, product_url, license_type, description, rating, platform, category"
},
"sample": {
"data": {
"query": "vlc",
"results": [
{
"name": "VLC Media Player (32-bit)",
"slug": "vlc-media-player-32-bit",
"rating": "5 out of 5 stars",
"category": "video",
"platform": "Windows",
"description": "A popular free media player",
"product_url": "https://download.cnet.com/vlc-media-player-32-bit/3000-13632_4-10267151.html",
"license_type": "Free"
}
]
},
"status": "success"
}
}About the Download API
Search and Browse
The search_software endpoint accepts a required query parameter and optional platform and sort inputs. It returns up to 10 software summary objects per query, each containing name, slug, product_url, license_type, description, rating, platform, and category. You can narrow results to a single OS by passing platform (windows, mac, android, ios, iphone) and sort by relevance, popularity, or release_date.
get_platform_listings and get_category_listings support paginated browsing — roughly 24 results per page. Category slugs follow the path segments used on the site, such as browsers, security, games, and developers. Both endpoints return the same software summary shape as search results, plus the requested platform and category in the response envelope.
Product Details and Downloads
get_software_details requires either a full product URL or both a slug and product_id. It returns a specs object with labeled technical details (Release, Version, Platform, Total Downloads), a rating string, a description, a program_id UUID, related_links, and a download_trigger_url. This is the primary endpoint for building software detail pages or enriching catalog records.
get_download_link accepts either a trigger_url or a slug in slug-name/product-id format and returns a direct_download_link when one is statically resolvable. When the download is JavaScript-initiated on the source site, the field returns the trigger page URL alongside an explanatory message rather than a file URL. get_most_popular and get_new_releases each return a single page of ~24 summary objects sorted by download count or release date respectively.
The Download API is a managed, monitored endpoint for download.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when download.com 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 download.com 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 cross-platform software discovery tool using
search_softwarewith platform and category filters. - Track new software releases by polling
get_new_releasesfor each supported platform. - Aggregate popularity rankings by extracting
ratingand download counts fromget_most_popularresults. - Populate a software catalog with technical specs by calling
get_software_detailsfor each slug and product ID. - Generate download pages by chaining
get_software_detailsto getdownload_trigger_url, then resolving it withget_download_link. - Compare license types across a category by iterating
get_category_listingspages and collectinglicense_typefields. - Surface related software recommendations by reading the
related_linksarray fromget_software_details.
| 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 CNET/Download.com have an official developer API?+
What does `get_software_details` return that the listing endpoints don't?+
get_software_details returns a specs object with labeled technical fields (e.g. Release, Version, Platform, Total Downloads), a program_id UUID, a download_trigger_url, and a related_links array. The listing endpoints (search_software, get_platform_listings, etc.) return only the summary shape: name, slug, product_url, license_type, description, rating, platform, and category.Does `get_download_link` always return a direct file URL?+
direct_download_link returns the trigger page URL with an explanatory message instead of a file URL. For software where a static download URL is resolvable, a direct link is returned. The trigger_url field is always populated in the response.Does the API expose user reviews or review text for individual software products?+
rating string (e.g. '2.7 out of 5 stars') but does not expose individual user reviews or review text. You can fork this API on Parse and revise it to add an endpoint that retrieves per-product review content.How does pagination work across listing endpoints?+
get_platform_listings and get_category_listings accept an integer page parameter and return ~24 results per page. get_most_popular and get_new_releases do not support pagination and each return a single page of ~24 items.