Amoeba APIamoeba.com ↗
Search and browse Amoeba Music's catalog via API. Get album details, track listings, used pricing, new releases, and store hours for all locations.
What is the Amoeba API?
The Amoeba Music API covers 5 endpoints for searching and browsing vinyl and CD inventory, retrieving full album metadata, and checking store locations. The get_product_detail endpoint returns track listings, new and used pricing, genre, label, catalog number, and format for any product page on amoeba.com — making it the core endpoint for catalog research and price comparison workflows.
curl -X GET 'https://api.parse.bot/scraper/90ef3b1e-22c5-4af7-9ca5-f5f47eeeea37/search_catalog?query=Beatles' \ -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 amoeba-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: Amoeba Music SDK — browse vinyl catalog, check new releases, drill into albums."""
from parse_apis.amoeba_music_api import Amoeba, ItemType, ProductNotFound
client = Amoeba()
# Search the catalog for an artist
for result in client.searchresults.search(query="Miles Davis", limit=5):
print(result.title, result.type, result.meta)
# Browse used vinyl & CDs — paginated, capped at 3 items
for item in client.catalogitems.list(type=ItemType.USED, limit=3):
print(item.title, item.artist, item.format, item.prices)
# Drill into the first catalog item for full album details
item = client.catalogitems.list(type=ItemType.NEW, limit=1).first()
if item:
album = item.details()
print(album.title, album.artist, album.details.genre, album.details.format)
# Browse latest new releases
for release in client.releases.list(limit=3):
print(release.title, release.artist, release.release_date, release.price)
# Typed error handling on a direct album lookup
try:
album = client.albums.get(url="https://www.amoeba.com/nonexistent-album/albums/9999999/")
print(album.title)
except ProductNotFound as exc:
print(f"Album not found: {exc}")
# List store locations
for store in client.stores.list(limit=5):
print(store.name, store.address, store.hours, store.phone)
print("exercised: searchresults.search / catalogitems.list / item.details / releases.list / albums.get / stores.list")
Full-text search across the Amoeba Music catalog. Returns matching artists and albums with links to their detail pages. Results are not paginated; the site returns all matches for the query.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search keyword (e.g., 'Beatles', 'Miles Davis') |
{
"type": "object",
"fields": {
"query": "string, the search query echoed back",
"results": "array of search result objects with title, url, meta, and type"
},
"sample": {
"data": {
"query": "Beatles",
"results": [
{
"url": "https://www.amoeba.com/the-beatles/artist/175931",
"meta": "(Rock)",
"type": "artist",
"title": "The Beatles"
},
{
"url": "https://www.amoeba.com/the-tape-beatles/artist/293445",
"meta": "(Experimental)",
"type": "artist",
"title": "The Tape-Beatles"
}
]
},
"status": "success"
}
}About the Amoeba API
Catalog Search and Product Detail
The search_catalog endpoint accepts a free-text query and returns matching artists and albums with titles, URLs, and type metadata. Results are not paginated — the full match set comes back in a single response. To get complete information on any result, pass its url to get_product_detail, which returns the album title, artist, a tracks array (each with number, title, and length), and a details object containing genre, release_date, label, catalog_number, format, and total length. Crucially, it also returns a listings array for new stock and a used_listings array, each with condition, price, and availability or condition comment.
Browsing and New Releases
The browse_vinyl_and_cd endpoint lets you page through Amoeba's inventory sorted by date added. It accepts an integer page, a type filter (new, used, or all), and a numeric genre ID (use 0 for all genres). Each item in the response includes title, artist, url, date_added, format, and prices. The total_items field tells you the full count matching your filters. Pages contain 20 items. The get_new_releases endpoint works similarly but sorts by release date and returns a release_date field per item alongside format and price. Its total field reports total page count rather than total item count.
Store Information
The get_store_info endpoint requires no parameters and returns a stores array covering all Amoeba Music physical locations. Each store object includes name, address, hours, and phone. This is useful for applications that need to surface in-store availability alongside online pricing data retrieved from other endpoints.
The Amoeba API is a managed, monitored endpoint for amoeba.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when amoeba.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 amoeba.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 used vinyl price tracker by polling
browse_vinyl_and_cdwithtype=usedand storingused_listingsprice changes over time - Automate new release alerts by querying
get_new_releasesdaily and filtering bygenreID for a specific music category - Aggregate full album metadata — label, catalog number, format, track listing — by chaining
search_catalogwithget_product_detail - Compare new vs. used pricing for the same album by reading both
listingsandused_listingsarrays fromget_product_detail - Display Amoeba store hours and contact info in a local music discovery app using
get_store_info - Identify recently added inventory for specific genres by filtering
browse_vinyl_and_cdwith agenreID and sorting bydate_added
| 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 Amoeba Music have an official developer API?+
What does `get_product_detail` return beyond basic title and artist?+
tracks array with track number, title, and length; a details object with genre, release_date, label, catalog_number, format, and total length; a listings array for new stock with condition, price, and availability; and a used_listings array with per-copy condition comments and prices.How does pagination work across the browse and new releases endpoints?+
browse_vinyl_and_cd and get_new_releases both return 20 items per page and accept a 1-based integer page parameter. browse_vinyl_and_cd includes a total_items count; get_new_releases returns a total field representing the total number of pages, not total items.Does `search_catalog` support filtering by format, genre, or condition?+
search_catalog accepts only a free-text query and returns all matches without format, genre, or condition filters. Filtered browsing is available through browse_vinyl_and_cd, which accepts type (new/used/all) and a numeric genre ID. You can fork this API on Parse and revise it to add format or condition filters to the search endpoint.