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

brokerbin

v3.1.0

Published

BrokerBin API wrapper for Node.js

Downloads

158

Readme

brokerbin

Version Downloads

BrokerBin API wrapper for Node.js

:cloud: Installation

# Using npm
npm install --save brokerbin

# Using yarn
yarn add brokerbin

:clipboard: Example

const BrokerBinREST = require("brokerbin");

// REST Example
(async () => {
    const bbClient = new BrokerBinREST({
        username: process.env.BROKERBIN_USERNAME || "your username",
        token: process.env.BROKERBIN_TOKEN || process.env.BROKERBIN_SOAP_KEY || "your token",
    })

    const result = await bbClient.partSearch({
        query: "F238F",
    });

    console.log(result)
})().catch(console.error)

:question: Get Help

There are few ways to get help:

  1. Please post questions on Stack Overflow. You can open issues with questions, as long you add a link to your Stack Overflow question.
  2. For bug reports and feature requests, open issues. :bug:

:memo: Documentation

BrokerBinREST(data)

Initializes a new BrokerBinREST instance.

Example:

const BrokerBinREST = require("brokerbin").REST

const bbClient = new BrokerBinREST({
  username: "webdevops",
  token: "..."
})

Params

  • Object data: The BrokerBinREST data:
    • username (String): The BrokerBin username (default: process.env.BROKERBIN_USERNAME).
    • token (String): The BrokerBin token (default: process.env.BROKERBIN_TOKEN).
    • api_root (String): The BrokerBin API root (default: https://search.brokerbin.com/api/v2).

Return

  • BrokerBinREST The BrokerBinREST instance.

request(endpoint, query, returnData)

Make a request to the BrokerBin API.

Params

  • String endpoint: The endpoint to request.
  • Object query: The query object.
  • Boolean returnData: If true, the function will return the data. If false, it will return the response object.

Return

  • Promise The response data or the response object.

partSearch(data)

Search for parts by part number.

Example

// Initialize the BrokerBin instance
const bbClient = new BrokerBinREST({
   username: "webdevops",
   token: "..."
})

// Run a search
bbClient.partSearch({
  query: "188122-B22",
})

Params

  • Object data: The search data:
    • query (required) the search string, part number
    • fields db fields to search against, possible values: partsno,manufacturer,description,condition (default: partsno)
    • mfg[] filter by manufacturer
    • cond[] filter by condition
    • country[] filter by country
    • region[] filter by region
    • state[] filter by state
    • size number of results to return (default: 10)
    • offset number of results to skip (default: 0, max: 900)
    • fuzziness percentage of search terms that require matches (default: 100%)
    • first myVen show first (boost 200%)
    • last myVen show last (de-boost 90%)
    • never myVen show never (filter out)
    • priced filter priced parts only
    • age only match parts this many days old, or less
    • sort[index][field]=direction the index, field and direction (default: sort[0][_score]=desc&sort[1][age]=desc&sort[2][company.original]=asc)
      • where index is an integer with which the lowest number takes the highest precedence and no numbers repeat -- ex: 0, 1, 2
      • and where the valid sorting fields are: age, clei.original, company.original, condition, country, manufacturer, partsno.original, price, qty, region, state
      • and where the valid sorting directions are: asc, desc

Return

  • Promise The response data looks like this:
{
    "meta": {
        "total": 18,
        "manufacturers": [
            {
                "key": "HP",
                "doc_count": 18
            }
        ],
        "conditions": [
            {
                "key": "REF",
                "doc_count": 17
            },
            {
                "key": "NEW",
                "doc_count": 1
            }
        ],
        "states": [
            {
                "key": "FL",
                "doc_count": 6
            },
            {
                "key": "WY",
                "doc_count": 6
            },
            {
                "key": "TX",
                "doc_count": 2
            },
            {
                "key": "KY",
                "doc_count": 1
            },
            {
                "key": "MN",
                "doc_count": 1
            },
            {
                "key": "NY",
                "doc_count": 1
            },
            {
                "key": "WA",
                "doc_count": 1
            }
        ],
        "countries": [
            {
                "key": "USA",
                "doc_count": 18
            }
        ],
        "regions": [
            {
                "key": "North America",
                "doc_count": 18
            }
        ],
        "request": {
            "count": 33,
            "limit": 100
        }
    },
    "data": [
        {
            "company": "Techlogix USA",
            "country": "USA",
            "part": "188122-B22",
            "clei": "",
            "mfg": "HP",
            "cond": "REF",
            "description": "HP 18.2GB 15000RPM Ultra-160 SCSI 80-Pin LVD Hot-Pluggable 3.5-inch Hard Drive",
            "price": 0,
            "qty": 1,
            "age_in_days": 6
        },
        {
            "company": "Techlogix USA",
            "country": "USA",
            "part": "188122-B22",
            "clei": "",
            "mfg": "HP",
            "cond": "REF",
            "description": "HP 18.2GB 15000RPM Ultra-160 SCSI 80-Pin LVD Hot-Pluggable 3.5-inch Hard Drive",
            "price": 0,
            "qty": 1,
            "age_in_days": 7
        },
        "truncated..."
    ]
}

partPrefix(data)

Search for parts by the beginning (or complete) of a part number.

Params

  • Object data: An object containing the following data:
    • query (required) the search string, part number, or beginning of part number
    • mfg[] filter by manufacturer
    • cond[] filter by condition
    • country[] filter by country
    • region[] filter by region
    • state[] filter by state
    • size number of results to return (default: 10)
    • offset number of results to skip (default: 0, max: 900)
    • first myVen show first (boost 200%)
    • last myVen show last (de-boost 90%)
    • never myVen show never (filter out)
    • priced filter priced parts only
    • age only match parts this many days old, or less
    • sort[index][field]=direction the index, field and direction (default: sort[0][_score]=desc&sort[1][age]=desc&sort[2][company.original]=asc)
      • where index is an integer with which the lowest number takes the highest precedence and no numbers repeat -- ex: 0, 1, 2
      • and where valid sorting fields are: age, clei.original, company.original, condition, country, manufacturer, partsno.original, price, qty, region, state
      • and where valid sorting directions are: asc, desc

Return

  • Promise The response data looks like this:
{
   "meta": {
       "total": 18,
       "request": {
           "count": 16,
           "limit": 50
       },
       "manufacturers": [
           {
               "key": "HP",
               "doc_count": 18
           }
       ],
       "conditions": [
           {
               "key": "REF",
               "doc_count": 16
           },
           {
               "key": "NEW",
               "doc_count": 2
           }
       ],
       "states": [
           {
               "key": "FL",
               "doc_count": 8
           },
           {
               "key": "NY",
               "doc_count": 3
           },
           {
               "key": "KY",
               "doc_count": 2
           },
           {
               "key": "TX",
               "doc_count": 2
           },
           {
               "key": "WA",
               "doc_count": 2
           },
           {
               "key": "MN",
               "doc_count": 1
           }
       ],
       "countries": [
           {
               "key": "USA",
               "doc_count": 18
           }
       ],
       "regions": [
           {
               "key": "North America",
               "doc_count": 18
           }
       ],
       "price": {
           "count": 18,
           "min": 0,
           "max": 65,
           "avg": 6.833333333333333,
           "sum": 123
       },
       "qty": {
           "count": 18,
           "min": 1,
           "max": 69,
           "avg": 7.277777777777778,
           "sum": 131
       }
   },
   "data": [
       {
           "company": "Serverworlds.com",
           "country": "USA",
           "part": "188122-B22",
           "clei": "",
           "mfg": "HP",
           "cond": "REF",
           "description": "18.2GB U3 15K SCSI 1 hotplug",
           "price": 65,
           "qty": 69,
           "age_in_days": 0
       },
       {
           "company": "Blitz Network Solutions Inc.",
           "country": "USA",
           "part": "188122-B21",
           "clei": "",
           "mfg": "HP",
           "cond": "REF",
           "description": "HP 18.2GB 15000RPM Ultra-160 SCSI Hot-Pluggable LVD 80-Pin 3.5-inch Hard Drive 5-7 Business Days Lead Time",
           "price": 0,
           "qty": 7,
           "age_in_days": 0
       }
       ,{"truncated":"truncated..."}
   ]
}

partStatsHistogram(data)

Produce 90 day histogram for a single part with extended stats on price and qty.

Params

  • Object data: An object containing the following data:
    • query (required) the search string, part number
    • mfg[] filter by manufacturer
    • cond[] filter by condition
    • country[] filter by country
    • region[] filter by region
    • state[] filter by state
    • never myVen show never (filter out)
    • priced filter priced parts only
    • interval the timeframe for the historgram (day,week,month, or year)
    • from include dates greater than or equal to this date
    • to include dates less than or equal to this date

Return

  • Promise The response data looks like this:
{
   "meta": {
       "request": {
           "count": 19,
           "limit": 25
       },
       "manufacturers": [
           {
               "key": "HP",
               "doc_count": 182
           }
       ],
       "conditions": [
           {
               "key": "REF",
               "doc_count": 154
           },
           {
               "key": "NEW",
               "doc_count": 28
           }
       ],
       "states": [],
       "countries": [
           {
               "key": "USA",
               "doc_count": 182
           }
       ],
       "regions": [
           {
               "key": "North America",
               "doc_count": 182
           }
       ]
   },
   "data": [
       {
           "date": "2023-02-01 00:00:00",
           "price_weighted_by_qty": 32.206832871652814,
           "price_stats": {
               "count": 182,
               "min": 0,
               "max": 45,
               "avg": 8.131868131868131,
               "sum": 1480,
               "sum_of_squares": 57320,
               "variance": 248.81777563096244,
               "variance_population": 248.81777563096244,
               "variance_sampling": 250.19245947422743,
               "std_deviation": 15.773958781198917,
               "std_deviation_population": 15.773958781198917,
               "std_deviation_sampling": 15.817473232922742,
               "std_deviation_bounds": {
                   "upper": 39.679785694265966,
                   "lower": -23.416049430529704,
                   "upper_population": 39.679785694265966,
                   "lower_population": -23.416049430529704,
                   "upper_sampling": 39.76681459771362,
                   "lower_sampling": -23.503078333977353
               }
           },
           "qty_stats": {
               "count": 182,
               "min": 1,
               "max": 73,
               "avg": 11.901098901098901,
               "sum": 2166,
               "sum_of_squares": 113284,
               "variance": 480.80340538582294,
               "variance_population": 480.80340538582294,
               "variance_sampling": 483.45977779126946,
               "std_deviation": 21.927229769987427,
               "std_deviation_population": 21.927229769987427,
               "std_deviation_sampling": 21.98771879461963,
               "std_deviation_bounds": {
                   "upper": 55.75555844107376,
                   "lower": -31.953360638875953,
                   "upper_population": 55.75555844107376,
                   "lower_population": -31.953360638875953,
                   "upper_sampling": 55.87653649033817,
                   "lower_sampling": -32.07433868814036
               }
           }
       }
   ]
}

rfqHistogram(data)

Aggregated RFQ counts for a single part.

Params

  • Object data: An object containing the following data:
    • query (required) the search string, part number
    • mfg[] filter by manufacturer
    • cond[] filter by condition
    • from include dates greater than or equal to this date
    • to include dates less than or equal to this date
    • size number of results to return (default: 10)
    • offset number of results to skip (default: 0, max: 900)
    • fuzziness percentage of search terms that require matches (default: 100%)

Return

  • Promise The response data looks like this:
{
   "meta": {
       "request": {
           "count": 19,
           "limit": 25
       },
       "manufacturers": [
           {
               "key": "HP",
               "doc_count": 50
           }
       ],
       "conditions": [
           {
               "key": "NEW",
               "doc_count": 50
           }
       ]
   },
   "data": [
       {
           "date": "2023-01-30 00:00:00",
           "rfqs": 5
       },
       {
           "date": "2023-02-06 00:00:00",
           "rfqs": 17
       },
       {
           "date": "2023-02-13 00:00:00",
           "rfqs": 6
       },
       {
           "date": "2023-02-20 00:00:00",
           "rfqs": 6
       },
       {
           "date": "2023-02-27 00:00:00",
           "rfqs": 7
       },
       {
           "date": "2023-03-06 00:00:00",
           "rfqs": 9
       }
   ]
}

supplyAndDemandHistogram(data)

Aggregated Search and Result counts for a single part.

Params

  • Object data: An object containing the following data:
    • query (required) the search string, part number
    • mfg[] filter by manufacturer
    • age only include parts this many days old, or less
    • fuzziness percentage of search terms that require matches (default: 100%)
    • interval the timeframe for the historgram (day,week,month, or year)
    • from include dates greater than or equal to this date
    • to include dates less than or equal to this date

Return

  • Promise The response data looks like this:
{
    "meta": {
        "request": {
            "count": 12,
            "limit": 25
        },
        "manufacturers": [
            {
                "key": "HP",
                "doc_count": 18
            },
            {
                "key": "HPE",
                "doc_count": 17
            },
            {
                "key": "ARUBA NETWORKS",
                "doc_count": 13
            },
            {
                "key": "HPE - ARUBA SWITCHING",
                "doc_count": 3
            }
        ]
    },
    "data": [
        {
            "date": "2023-02-01 00:00:00",
            "searches": 2113,
            "avg_result_count": 688
        }
    ]
}

topParts(data)

Aggregated search counts by part for a given mfg sorted by number of searches in descending order

Params

  • Object data: An object containing the following data:
    • query (required) the search string, manufacturer
    • fuzziness percentage of search terms that require matches (default: 100%)
    • from include dates greater than or equal to this date
    • to include dates less than or equal to this date
    • size the number of parts to return

Return

  • Promise The response data looks like this:
{
   "meta": {
       "request": {
           "count": 19,
           "limit": 25
       }
   },
   "data": [
       {
           "part": "WS-C2960X-24PS-L",
           "searches": 5475
       },
       {
           "part": "WS-C2960X-48FPS-L",
           "searches": 4154
       },
       {
           "part": "WS-C2960X-48FPD-L",
           "searches": 3661
       },
       {
           "part": "GLC-LH-SMD",
           "searches": 3244
       },
       {
           "part": "C9300-NM-8X",
           "searches": 2783
       },
       {
           "part": "N9K-C93180YC-EX",
           "searches": 2442
       },
       {
           "part": "STACK-T1-50CM",
           "searches": 2410
       },
       {
           "part": "ASR1001-X",
           "searches": 2394
       },
       {
           "part": "C9200L-48P-4X-E",
           "searches": 1955
       },
       {
           "part": "WS-C2960X-48LPS-L",
           "searches": 1886
       }
   ]
}

matches(data)

Find users and company who searched for an exact part number.

Params

  • Object data: An object containing the following data:
    • query (required) the search string, part number
    • from include matches on dates greater than or equal to this date
    • never myVen show never (filter out)
    • in_stock only include searchers who had the item in-stock when the search occurred

Return

  • Promise The response data looks like this:
{
   "meta": {
       "request": {
           "count": 44,
           "limit": 100
       }
   },
   "data": {
       "query": "c9300-nm-8x",
       "from": "2024-06-20",
       "results": {
           "count": 17,
           "matches": [
               {
                   "company_name": "Network Craze Technologies",
                   "company_contact": "James Froio",
                   "search_query": "C9300-NM-8X",
                   "qty": 26,
                   "age": "51 minutes ago"
               },
               {
                   "company_name": "NW Remarketing",
                   "company_contact": "Louis Zahler",
                   "search_query": "C9300-NM-8X",
                   "qty": 5,
                   "age": "3 hours ago"
               },
               {
                   "company_name": "Refub Tech",
                   "company_contact": "Saless Team",
                   "search_query": "C9300-NM-8X",
                   "qty": 4,
                   "age": "4 hours ago"
               },
               {
                   "company_name": "Neon Devices LLC",
                   "company_contact": "Nohail K",
                   "search_query": "C9300-NM-8X",
                   "qty": 52,
                   "age": "4 hours ago"
               },
               {
                   "company_name": "Network Integrators LTD.",
                   "company_contact": "Purchasing Team",
                   "search_query": "C9300-NM-8X",
                   "qty": 1,
                   "age": "5 hours ago"
               },
               {
                   "company_name": "Link-US LLC",
                   "company_contact": "Basem Toma",
                   "search_query": "C9300-NM-8X",
                   "qty": 1,
                   "age": "6 hours ago"
               },
               {
                   "company_name": "Crisp Technologies LLC",
                   "company_contact": "Steve Murphy",
                   "search_query": "C9300-NM-8X",
                   "qty": 10,
                   "age": "6 hours ago"
               },
               {
                   "company_name": "Nordic Computer",
                   "company_contact": "Ozren Nezic",
                   "search_query": "C9300-NM-8X",
                   "qty": 1,
                   "age": "11 hours ago"
               },
               {
                   "company_name": "Euro IT Solution LTD",
                   "company_contact": "Javed A.",
                   "search_query": "C9300-NM-8X",
                   "qty": 2,
                   "age": "12 hours ago"
               },
               {
                   "company_name": "Knowledge Computers PTE",
                   "company_contact": "N/A",
                   "search_query": "C9300-NM-8X",
                   "qty": 2,
                   "age": "12 hours ago"
               },
               {
                   "company_name": "Euro IT Solution LTD",
                   "company_contact": "Javed A.",
                   "search_query": "C9300-NM-8X",
                   "qty": 2,
                   "age": "12 hours ago"
               },
               {
                   "company_name": "Units Enterprise",
                   "company_contact": "Andy Bryant",
                   "search_query": "C9300-NM-8X",
                   "qty": 2,
                   "age": "1 day ago"
               },
               {
                   "company_name": "Units Enterprise",
                   "company_contact": "Jim Henderson",
                   "search_query": "C9300-NM-8X",
                   "qty": 2,
                   "age": "1 day ago"
               },
               {
                   "company_name": "Units Enterprise",
                   "company_contact": "Jim Henderson",
                   "search_query": "C9300-NM-8X",
                   "qty": 2,
                   "age": "1 day ago"
               },
               {
                   "company_name": "Knowledge Computers USA",
                   "company_contact": "Travis Oestreich",
                   "search_query": "c9300-nm-8x",
                   "qty": 4,
                   "age": "1 day ago"
               },
               {
                   "company_name": "Colorado Peak Technologies,Inc",
                   "company_contact": "Alex Myers",
                   "search_query": "C9300-NM-8X",
                   "qty": 3,
                   "age": "1 day ago"
               },
               {
                   "company_name": "eGoods Supply, Inc.",
                   "company_contact": "Norman",
                   "search_query": "C9300-NM-8X",
                   "qty": 4,
                   "age": "1 day ago"
               }
           ]
       }
   }
}

:yum: How to contribute

Have an idea? Found a bug? See how to contribute.

:scroll: License

MIT © Bloggify