VinylEngine APIvinylengine.com ↗
Access VinylEngine's database of 10,000+ turntables, tonearms, and cartridges. Query specs, filter by drive type, manufacturer, cartridge type, and more.
What is the VinylEngine API?
The VinylEngine API exposes 5 endpoints covering three specialized databases of vinyl hardware — turntables, tonearms, and cartridges — with individual records containing dozens of specification fields. search_turntables lets you filter by drive method, motor type, speed control, and automation level, while search_cartridges and search_tonearms offer similarly granular filtering. Results include manufacturer names, model identifiers, physical dimensions, electrical specs, ratings, and historical pricing.
curl -X GET 'https://api.parse.bot/scraper/79cc5790-7e74-41bf-96d7-7c7c8824feca/search_turntables?drive=any&motor=any&order=ASC&changer=any&control=any&sort_by=model&automation=any&manufacturer=Technics' \ -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 vinylengine-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.
from parse_apis.vinyl_engine_database_api import (
VinylEngine, TurntableSortField, Sort, DriveType, CartridgeType, Database
)
vinyl = VinylEngine()
# Search for direct-drive turntables sorted by year
for turntable in vinyl.turntables.search(
drive=DriveType.DIRECT,
sort_by=TurntableSortField.YEAR,
order=Sort.DESC,
):
print(turntable.manufacturer, turntable.model, turntable.year, turntable.rating)
# List all cartridge manufacturers
for mfr in vinyl.manufacturers.list(database=Database.CARTRIDGES):
print(mfr.name)
# Get turntables from a specific manufacturer
technics = vinyl.manufacturer("Technics")
for tt in technics.turntables.list(model="SL-1200"):
print(tt.model, tt.drive, tt.wow_and_flutter, tt.price)
# Search moving coil cartridges
for cart in vinyl.cartridges.search(type=CartridgeType.MOVING_COIL):
print(cart.manufacturer, cart.model, cart.tracking_force, cart.stylus_tip)
Search the turntable database with optional filters. Returns up to 20 matching turntables per page with specifications including drive type, motor, control, automation, speeds, platter, tonearm, dimensions, weight, year, and price. Paginates server-side at 20 records; records_omitted indicates overflow.
| Param | Type | Description |
|---|---|---|
| drive | string | Drive method filter. |
| model | string | Filter by model name substring (e.g. 'SL-1200'). Max 20 characters. |
| motor | string | Motor type filter. |
| order | string | Sort order. |
| changer | string | Changer filter. |
| control | string | Speed control filter. |
| sort_by | string | Sort field. |
| automation | string | Automation filter. |
| manufacturer | string | Filter by manufacturer name. Use 'any' or omit for all. |
{
"type": "object",
"fields": {
"count": "integer, number of entries returned",
"entries": "array of turntable objects with full specifications",
"pagination": "object with from, to, total fields indicating record range",
"database_stats": "object with total_manufacturers and total_turntables counts",
"records_omitted": "boolean indicating if results exceed the 20-record display limit"
},
"sample": {
"data": {
"count": 20,
"entries": [
{
"year": "1979",
"drive": "Direct",
"model": "SL-1200 mk2",
"motor": "DC",
"price": "$750 (1979)",
"rating": 0.9,
"rumble": "-78dB",
"speeds": "33, 45 rpm",
"weight": "12.5 kg",
"changer": "No",
"control": "Quartz Locked",
"platter": "332 mm, 2 kg",
"tonearm": "S-Shaped",
"image_url": "https://www.vinylengine.com/images/model/technics_sl-1200_mk2.jpg",
"automation": "Manual",
"dimensions": "453 x 162 x 360 mm",
"library_url": "https://www.vinylengine.com/library/technics/sl-1200.shtml",
"manufacturer": "Technics",
"wow_and_flutter": "0.025% wrms"
}
],
"pagination": {
"to": 20,
"from": 1,
"total": 242
},
"database_stats": {
"total_turntables": 4538,
"total_manufacturers": 390
},
"records_omitted": true
},
"status": "success"
}
}About the VinylEngine API
Turntable Database
The search_turntables endpoint queries a database of thousands of turntables and returns up to 20 records per call. Filter parameters include drive (idler, belt, direct), motor (ac, dc, induction), control (quartz, servo, electronic, synchronous), and automation (manual, semi, full). Response objects include fields such as platter_diameter, platter_weight, wow_and_flutter, rumble, year, and price. The records_omitted boolean in the response signals when the full result set exceeds the 20-record display limit. For manufacturer-scoped lookups, get_turntable_details accepts a required manufacturer parameter and an optional model substring (up to 20 characters) to narrow results further.
Tonearm and Cartridge Databases
search_tonearms returns entries with fields covering the key alignment geometry: effective_length, overhang, offset_angle, pivot_to_spindle, null_points, and effective_mass. You can sort by any of those numeric fields and filter by manufacturer. search_cartridges covers transducer type (ceramic, dynamic_coil, moving_coil, moving_magnet, and others), with response fields for output_voltage, frequency_response, tracking_force, channel_separation, compliance, stylus_tip, and cantilever material. Both endpoints include a database_stats object reporting total manufacturers and total items across each respective database.
Manufacturer Lists and Pagination
list_manufacturers accepts a database parameter (turntables, tonearms, or cartridges) and returns the complete sorted array of manufacturer name strings alongside summary counts. This is useful for building autocomplete inputs or validating manufacturer names before passing them to the search endpoints. All search endpoints that can return more records than the display limit include a pagination object with from, to, and total fields so callers can track their position in the full result set.
The VinylEngine API is a managed, monitored endpoint for vinylengine.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when vinylengine.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 vinylengine.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?+
- Building a turntable comparison tool filtered by drive type (belt vs. direct) and speed control method
- Matching a cartridge to a tonearm by comparing effective mass against cartridge compliance values
- Aggregating historical price and year data across turntable manufacturers for vintage market research
- Populating a Hi-Fi equipment database with verified tonearm alignment geometry specs
- Validating stylus tip compatibility by filtering cartridges by type and tracking force range
- Generating manufacturer catalogs for any of the three hardware categories using
list_manufacturers
| 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 VinylEngine have an official developer API?+
What does `get_turntable_details` return that `search_turntables` doesn't?+
get_turntable_details requires a manufacturer parameter and scopes results to that maker, making it more reliable for retrieving every model from a single brand (e.g., all Technics or all Thorens entries). It returns the same full specification fields but also echoes back the manufacturer and model_search terms used, which is handy for logging or caching by key.Are user-submitted manuals or forum content included in responses?+
How are results paginated and what happens when a search returns more than 20 items?+
records_omitted field is set to true and the pagination object provides from, to, and total values so you can see how many records exist in total. Refining your filter parameters (for example, adding a model substring or specifying a manufacturer) is the practical way to reduce result sets below the 20-record cap.Can I retrieve cartridge ratings or user reviews through the API?+
search_cartridges endpoint returns specification fields but does not currently expose user ratings or review text for cartridges. Turntable entries do include a rating field. You can fork this API on Parse and revise it to surface ratings data for cartridges and tonearms if that data is available on the source pages.