npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

bookmancy

v1.0.3

Published

abe books book price scraper

Downloads

5

Readme

Bookmancy

a brilliant new way to search for book prices

Overview

Bookmancy is a small module to scrape abebooks.com search results and ebay book search results for consumption in a node environment.

abe - AbeBooks search

Methods

search({author, title, publisher, format, year})

  • title - String - The title of the book
  • author - String - The author or editor of the book. Basically anything that a seller would potentially put as the author.
  • publisher - String - The name of the publisher
  • format - String - options include [hardback, hardcover, softcover, paperback, h, p]
  • year - Number - Four digit year, filters books published <=year

Returns

[
    <BookResult>...
]

Example

const bookmancy = require('bookmancy');
bookmancy.abe.search({author: 'August Derleth', publisher: 'Mycroft'})
    .then(results => {

    });

searchWithUrlInResponse({author, title, publisher, format, year})

Argument options are the same as above, but the resolved value is different. It will include the URL that was scraped in case you wish to actually view the page for yourself in your app.

Returns

{
    url: 'https://abebooks...',
    retults: [
        <BookResult>...
    ]
}

Example

const bookmancy = require('bookmancy');
bookmancy.abe.searchWithUrlInResponse({author: 'August Derleth', publisher: 'Mycroft'})
    .then(results => {
        
    });

ebay - ebay Search

REQUIRES ebay API key

All ebay requests take place with their actual API. So you will need to register to add an application and get your keys. Once you have your key you will need to be sure to include the key in your project's .env file:

EBAY_API_KEY=xxxxxxxxxxxxxxxxxxx

Failure to include this key will result in all search calls rejecting with an error highlighting that this step must be completed.

Methods

search(query) - Search both sold and live listings

This will search two APIs. The sold items, and current items API will be merged and sorted by price. To get specific results use one of the following methods.

  • query - String - Generic query. Best bet for ebay right now. No relevant metrics are tracked/searchable (to my knowledge) in the ebay API.

Returns

[
    <BookResult>...
]

Example

const bookmancy = require('bookmancy');
bookmancy.ebay.search('August Derleth Mycroft')
    .then(results => {
        
    });

searchLiveListings(query)

Same as search, but only for current listings. Caution: this usually has unrealistically high prices at the top of the list. Usually we use this one to verify a book is hard to come by.

searchSoldListings(query)

Same as search, but only for listings that have completed with sales. Note that the price on the result might not necessarily be correct. (e.g. Buy It Now vs. Accepted Offer price) But this generally is good enough to know how popular something is and gives a very good idea of how easy it should be to flip.

BookResult - Not available on export, but is the structure for results from both searches

  • about - String - The description from the listing
  • price - String - Unformatted price
  • shipping - String|Null - Unformatted shipping price
  • image - String|Null - URL for photo
  • year - String|Null - Year work was published in listing
  • sold - Boolean - (ebay only) if listing sold or is no longer for sale
  • url - String - URL to view item listing
  • date - Timestamp - (ebay only) when listing/auction expires