viaLibri Scraper — Rare & Antiquarian Book Listings, Prices
Pricing
from $2.82 / 1,000 book listings
viaLibri Scraper — Rare & Antiquarian Book Listings, Prices
Scrape viaLibri for rare and antiquarian book listings with prices, sellers, marketplaces and condition notes for dealers and collectors. $3.52 per 1,000.
Pricing
from $2.82 / 1,000 book listings
Rating
0.0
(0)
Developer
Muhammad Afzal
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
14 hours ago
Last modified
Categories
Share
viaLibri Scraper searches viaLibri, the search engine for old, rare, and second-hand books, and returns one record per listing with title, author, price in your chosen currency, original price, seller, seller location, source marketplace, listing link, and description. It is built for rare-book dealers, collectors, librarians, and price researchers, and costs $3.52 per 1,000 listings on the FREE tier plus a $0.006251 start fee per run.
What does the viaLibri scraper return?
It returns one dataset record per unique viaLibri listing, used or auction, with these fields:
| Field | What it contains |
|---|---|
title, author | Book title and author as listed |
listingType | used or auction |
price, currency | Price converted by viaLibri into your display currency |
originalPrice | The seller's own price text, for example €18 |
sellerName, sellerLocation, sellerId | Bookseller and country when listed |
aggregator | Marketplace or site the listing comes from |
listingUrl | viaLibri link that forwards to the seller's listing |
description, descriptionIsTruncated | Edition, condition, and binding notes |
year | Publication year read from the title or the imprint at the start of the description, for example 1520; null when neither shows one |
imageUrl | Cover or item image when viaLibri has one; often null |
listingId, bookId | viaLibri identifiers |
sourceSearchUrl, scrapedAt | The viaLibri search page and retrieval time |
A run summary is saved as OUTPUT: listings returned, listings charged, searches, pages fetched, runtime, and warnings.
How do I compare rare book prices across sellers?
Search for the title and author, sort by price, and pick one display currency, so every listing is directly comparable.
{"searchQueries": ["Virginia Woolf Orlando first edition"],"listingTypes": ["used", "auction"],"currency": "GBP","sort": "price.asc","maxResults": 100,"maxPagesPerQuery": 2}
price is viaLibri's converted price; originalPrice keeps the seller's own figure, so you can check the conversion. Auction rows may show the current bid.
How do I search antiquarian books by title, author, or keyword?
Add one or more phrases to searchQueries; each is matched against viaLibri's title, author, and keyword fields. Use 2–200 characters per query.
maxResults: 1–500 listings across all searches (default 50).maxPagesPerQuery: 1–10 pages per search, about 50 listings per page (default 2).listingTypes:used,auction, or both (default both).currency:USD(default),EUR,GBP,CAD,AUD,CHF, orJPY.sort: by year, price, author, title, or dealer name, ascending or descending, oradded.descfor newest; defaultyear.asc.
Can I run an advanced viaLibri search?
Yes. Build the search on viaLibri with its advanced filters, copy the results URL (it starts with https://www.vialibri.net/searches), and pass it in startUrls. The Actor reruns that search with your currency, sort, and listing types unless the URL already sets them.
{"startUrls": [{ "url": "https://www.vialibri.net/searches?all_text=Darwin+Origin+of+Species&listing_type=auction" }],"searchQueries": []}
When you pass only startUrls, only those searches run. The Hamlet query is a Console prefill, not a default, so it is never added to API calls that leave searchQueries out.
When should I use it, and when not?
Use it when you need:
- asking prices for a title across many booksellers and marketplaces in one table;
- a dealer's view of what copies of an edition are on the market, with condition notes;
- a scheduled check for new listings of a wanted book (sort by
added.desc); - antiquarian or out-of-print book data for an AI agent or price study.
Do not use it when you need:
- open access scholarly books with ISBN and DOI: use Open Access Books Scraper;
- valuations or sold prices: the Actor returns current asking prices, not appraisals or sale records;
- reader reviews or ratings, or seller contact details beyond the name and country shown.
How do I call it from code?
Use the official Apify API clients with the same JSON input as in Console.
JavaScript (apify-client)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('muhammadafzal/vialibri-books-scraper').call({searchQueries: ['Hamlet'],listingTypes: ['used'],sort: 'price.asc',maxResults: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach((b) => console.log(b.title, b.price, b.currency, b.sellerName));
Python (apify-client 3.x)
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("muhammadafzal/vialibri-books-scraper").call(run_input={"searchQueries": ["Hamlet"], "sort": "price.asc", "maxResults": 50})for listing in client.dataset(run.default_dataset_id).iterate_items():print(listing["title"], listing["price"], listing["currency"], listing["aggregator"])
Use it from an AI assistant
The Actor works from Claude, ChatGPT, Cursor, or any MCP client through Apify's MCP server. Add https://mcp.apify.com/?tools=muhammadafzal/vialibri-books-scraper as a server, then ask, for example: "What are the five cheapest copies of a first edition of The Hobbit on viaLibri right now, in pounds?"
What does the output look like?
Listings from a three-listing test search for Hamlet sorted by price (2026-08-13; descriptions shortened):
[{"recordType": "bookListing","listingId": "202608130734iA6G7L33nt.a3","bookId": null,"author": "Hansen, William","title": "Saxo Grammaticus and the Life of Hamlet: A Translation, History, and Commentary (English and Latin Edition)","listingType": "used","description": "Univ of Nebraska Pr, 1983. Jacket in Fair condition. Pencil underlining on some pages…","descriptionIsTruncated": false,"year": null,"sellerName": "Archives Books, Inc.","sellerLocation": "United States","sellerId": 8340,"price": 23.44,"currency": "USD","originalPrice": "$23","aggregator": "Amazon.com","listingUrl": "https://www.vialibri.net/search-result-links/202608130734iA6G7L33nt.a3.1/link","imageUrl": null,"sourceSearchUrl": "https://www.vialibri.net/searches?all_text=Hamlet&listing_type=used&sort=price.asc&s=1.tjp6d5.723a60a61ed188bc","scrapedAt": "2026-08-13T07:34:20.870Z","warnings": []},{"listingId": "202608130734iA6G7L33nt.8u","author": "Shakespeare, William","title": "Hamlet","listingType": "used","description": "Bantam Classics, 1988…","sellerName": "Bonita","sellerLocation": "United States","price": 30.93,"currency": "USD","originalPrice": "$31","aggregator": "Alibris"}]
How much does it cost to scrape viaLibri?
You pay per unique listing saved, plus a start fee charged once per run. Platform usage is included in these prices.
| Event | FREE | BRONZE | SILVER | GOLD, PLATINUM, DIAMOND |
|---|---|---|---|---|
| Book listing (per listing) | $0.00352 | $0.003432 | $0.003344 | $0.002816 |
| Actor start (once per run) | $0.006251 | $0.006094 | $0.005938 | $0.005 |
Worked totals on the FREE tier:
- Default run, 50 listings: $0.006251 + 50 × $0.00352 = $0.182251.
- Maximum run, 500 listings: $0.006251 + 500 × $0.00352 = $1.766251 (GOLD: $1.413).
The start fee is charged when the run begins, even if a search then finds nothing. Each listing is charged once, after it is saved.
Limits and reliability
- Up to 500 listings per run and 10 pages per search.
- viaLibri gathers results from many sites while you wait, so the Actor polls until the search completes, for up to about three minutes per search.
- Listings are deduplicated by
listingIdacross all searches in a run. - If no listing is collected and a search failed, the run fails with the reason in its status message; partial results are kept otherwise.
- The Actor uses viaLibri's public search and the structured data embedded in its result pages. It does not log in or open seller pages.
FAQ
Does it need a viaLibri account?
No. It uses viaLibri's public search, the same one any visitor uses, and never logs in.
Which marketplaces do the listings come from?
Whatever viaLibri aggregates for your search. The aggregator field names the source of each listing, for example Alibris or Amazon.com in the sample above.
Can I get auction listings only?
Yes. Set listingTypes to ["auction"].
Which currencies are supported?
USD, EUR, GBP, CAD, AUD, CHF, and JPY. price is converted by viaLibri; originalPrice keeps the seller's figure.
Why is year sometimes empty?
viaLibri does not publish a separate year field, so the Actor reads it from the listing title or the imprint at the start of the description ("Paris, 1520. Folio."). Life dates such as "(1564-1616)", year ranges and measurements are ignored, and year is null when no imprint year is shown. In a 50-listing Hamlet check on 2026-10-27, 41 listings had a year.
How many listings can one run return?
Up to 500 across all searches. For more, split the job into several runs with different queries or sort orders.
Can I track new listings for a wanted book?
Yes. Save a Task with sort: "added.desc", schedule it, and compare listingId values between runs.
Related Actors
- Open Access Books Scraper: scholarly open access books with ISBN and DOI.
- Citation Count & DOI Citations Scraper: citations and counts for research papers.
- US Government Datasets Scraper: Data.gov dataset metadata.
Legal and responsible use
The Actor collects public listing data that viaLibri shows to every visitor. It does not log in, bypass access controls, or collect private data. Follow viaLibri's terms and applicable data-protection and copyright law, and verify prices with the seller before buying.
Last verified: 2026-10-27