Ruby Lane APIruby-lane.com ↗
Access Ruby Lane listings, item details, shop profiles, and category browsing via API. Extract prices, conditions, descriptions, and seller info.
What is the Ruby Lane API?
The Ruby Lane API provides 4 endpoints for extracting listing data from Ruby Lane, a curated marketplace for antiques, collectibles, and vintage jewelry. The search_items endpoint accepts a keyword query plus optional pagination and sort parameters, returning matched item arrays. get_item_details delivers per-listing fields including price, currency, condition, description, and seller name. browse_category and get_shop round out coverage of category-level and dealer-level data.
curl -X GET 'https://api.parse.bot/scraper/4cad73ed-f164-468f-a7ca-9c33ca518e36/search_items?page=1&sort=most_recent&query=jewelry' \ -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 ruby-lane-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: Ruby Lane SDK — search antiques, browse categories, drill into items and shops."""
from parse_apis.ruby_lane_api import RubyLane, Sort, Category, NotFound
client = RubyLane()
# Search for vintage items with sorting, capped to 5 results
for item in client.searchresults.search(query="Victorian brooch", sort=Sort.PRICE_LOW_HIGH, limit=5):
print(item.title, item.price, item.shop_name)
# Browse a category — take one item and drill into its details
item = client.categoryresults.browse(category=Category.JEWELRY, limit=1).first()
if item:
detail = client.itemdetails.get(url=item.url)
print(detail.name, detail.price, detail.currency, detail.condition)
# Fetch a shop profile
try:
shop = client.shops.get(shop_slug="antique-matchmaker")
print(shop.shop_name, shop.location, shop.item_count)
except NotFound as exc:
print(f"Shop not found: {exc}")
print("exercised: searchresults.search / categoryresults.browse / itemdetails.get / shops.get")
Full-text search across all Ruby Lane listings. Returns paginated item results with title, price, shop name, and image. Results default to 'Best Match' sorting. Each page returns up to 60 items.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination |
| sort | string | Sort order for results |
| queryrequired | string | Search keyword or phrase |
{
"type": "object",
"fields": {
"page": "string indicating the current page number",
"items": "array of item objects with title, url, shop_name, price, and image fields",
"query": "string echoing the search query"
},
"sample": {
"data": {
"page": "1",
"items": [
{
"url": "https://www.rubylane.com/item/1603951-05298/19-c-Rosewood-Inlaid-Mother-Pearl",
"image": "https://cdn0.rubylane.com/_pod/item/1603951/05298/19-c-Rosewood-Inlaid-Mother-Pearl-pic-1-220:5.5-1735026572.webp",
"price": "120",
"title": "19 c Rosewood Inlaid Mother of Pearl Sewing Box Jewelry Trinket Casket Chest MOP",
"shop_name": "Antique Matchmaker"
}
],
"query": "jewelry"
},
"status": "success"
}
}About the Ruby Lane API
Search and Category Browsing
The search_items endpoint accepts a required query string along with an optional page integer and sort parameter (e.g. price_low_high). It returns the matched items array alongside the echoed query and current page string — useful for paginating through result sets programmatically. The browse_category endpoint works similarly but navigates by category slug such as jewelry, dolls, or art, letting you pull all listings within a specific Ruby Lane category without crafting a keyword query.
Item Detail Retrieval
Passing a full item listing URL to get_item_details returns a structured record with six fields: name, price (as a number), currency, condition, description, and seller. The condition and description fields are particularly relevant for antiques and collectibles research, where item provenance and grading directly affect valuation. The numeric price field enables sorting and comparison logic on the client side without string parsing.
Shop Profiles
The get_shop endpoint accepts a shop_slug taken from a Ruby Lane shop URL and returns the shop's shop_name, location, and description. This is the primary way to profile individual dealers — for instance, to identify seller geography or build a directory of shops by region. Shop-level data complements item-level data when building sourcing tools or dealer research workflows.
The Ruby Lane API is a managed, monitored endpoint for ruby-lane.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ruby-lane.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 ruby-lane.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?+
- Compare prices across Ruby Lane listings for a specific antique or collectible by keyword using
search_items - Monitor new listings in a category like
artordollsby pollingbrowse_categorywith pagination - Extract item condition and description from
get_item_detailsto assess authenticity and grading for resale research - Build a dealer directory using
get_shopto collect shop name, location, and description across multiple sellers - Aggregate currency-normalized pricing data from
get_item_detailsfor market valuation analysis - Track seller inventory by combining
get_shopslug data withsearch_itemsqueries filtered to that seller - Identify regional antique dealers by extracting the
locationfield from multipleget_shopcalls
| 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 Ruby Lane offer an official developer API?+
What does `get_item_details` return, and does it include seller ratings or reviews?+
name, price, currency, condition, description, and seller. Seller ratings and buyer reviews are not currently included in the response. The API covers item-level attributes and seller name. You can fork it on Parse and revise to add a reviews or ratings endpoint.Does the API return sold or historical listings?+
search_items, browse_category, and get_item_details. Sold or archived listings are not currently covered. You can fork the API on Parse and revise it to add an endpoint targeting sold item data if that becomes available from the source.How does pagination work across endpoints?+
search_items and browse_category both accept an optional page integer parameter. The response echoes back the current page as a string. There is no total-page-count field returned, so you would need to iterate pages until an empty items array is returned to detect the end of results.Can I retrieve all items listed in a specific shop?+
get_shop returns the shop's profile fields — shop_name, location, and description — but does not return an inventory list directly. A shop's listings are not currently enumerable through a dedicated shop-inventory endpoint. You can fork the API on Parse and revise it to add shop-level inventory browsing.