by rchipka

rchipka /node-osmosis

Web scraper for NodeJS

3.9K Stars 212 Forks Last release: Not found 155 Commits 6 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:


HTML/XML parser and web scraper for NodeJS.


Build Status



  • Uses native libxml C bindings
  • Clean promise-like interface
  • Supports CSS 3.0 and XPath 1.0 selector hybrids
  • Sizzle selectors, Slick selectors, and more
  • No large dependencies like jQuery, cheerio, or jsdom
  • Compose deep and complex data structures

  • HTML parser features

    • Fast parsing
    • Very fast searching
    • Small memory footprint
  • HTML DOM features

    • Load and search ajax content
    • DOM interaction and events
    • Execute embedded and remote scripts
    • Execute code in the DOM
  • HTTP request features

    • Logs urls, redirects, and errors
    • Cookie jar and custom cookies/headers/user agent
    • Login/form submission, session cookies, and basic auth
    • Single proxy or multiple proxies and handles proxy failure
    • Retries and redirect limits


var osmosis = require('osmosis');

osmosis .get('') .find('h1 + div a') .set('location') .follow('@href') .find('header + div + div li > a') .set('category') .follow('@href') .paginate('.totallink +') .find('p > a') .follow('@href') .set({ 'title': 'section > h2', 'description': '#postingbody', 'subcategory': 'div.breadbox > span[4]', 'date': '[email protected]', 'latitude': '#[email protected]', 'longitude': '#[email protected]', 'images': ['[email protected]'] }) .data(function(listing) { // do something with listing data }) .log(console.log) .error(console.log) .debug(console.log)


For documentation and examples check out



Please consider a donation if you depend on web scraping and Osmosis makes your job a bit easier. Your contribution allows me to spend more time making this the best web scraper for Node.


We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.