Skip to content

jsdom

21,552 30 412 MIT
29.0.2 (7 Apr 2026) Nov 21 2011 263.7 million (month)

jsdom is a pure JavaScript implementation of web standards, notably the WHATWG DOM and HTML standards, for use with Node.js. It simulates a browser environment in Node.js, allowing you to parse HTML, manipulate the DOM, and interact with web pages using the same APIs available in web browsers.

Key features for web scraping:

  • Full DOM implementation Provides document.querySelector, document.querySelectorAll, and other standard DOM methods for traversing and manipulating parsed HTML.
  • Browser-like environment Simulates window, document, navigator, and other browser globals, enabling code that was written for browsers to run in Node.js.
  • JavaScript execution Can execute JavaScript embedded in HTML pages, including external scripts, making it possible to process pages that generate content dynamically (though much slower than a real browser).
  • Standards-compliant parsing Uses the same HTML parsing algorithm as web browsers (the WHATWG HTML specification), ensuring accurate handling of malformed HTML.
  • Cookie support Implements the tough-cookie library for cookie handling across requests.

For web scraping, jsdom is useful when you need more than simple CSS selector matching (what cheerio provides) but don't need a full browser. It's ideal for parsing complex HTML and running simple inline scripts without the overhead of Playwright or Puppeteer. However, for heavy JavaScript-rendered pages, a real browser automation tool is recommended.

Highlights


popularcss-selectors

Example Use


```javascript const { JSDOM } = require('jsdom');

// Parse an HTML string const html = `

Product A

$10.99
    <div class="product">
      <h2>Product B</h2>
      <span class="price">$24.99</span>
  </div>
</body>

`;

const dom = new JSDOM(html); const document = dom.window.document;

// Use standard DOM APIs to extract data const products = document.querySelectorAll('.product'); products.forEach(product => { const name = product.querySelector('h2').textContent; const price = product.querySelector('.price').textContent; console.log(${name}: ${price}); });

// Fetch and parse a remote page JSDOM.fromURL('https://example.com').then(dom => { const title = dom.window.document.title; console.log('Page title:', title); }); ```

Alternatives / Similar


3,886 8.0.0 (2026-02-21 19:30:52 ago) Jul 03 2013 compare
1,153 1.6.0 (2026-03-17 01:32:31 ago) Feb 09 2011 compare
4,789 12.0.0 (2026-03-20 23:08:40 ago) Aug 28 2011 compare
30,265 1.2.0 (2026-02-21 19:30:40 ago) Oct 08 2011 compare
#### Other Languages { data-search-exclude }
3,010 6.0.3 (2026-04-09 14:33:38 ago) Dec 13 2022 compare
- 4.14.3 (2025-11-30 15:08:24 ago) Jul 26 2019 compare
5,734 1.0.4 (2026-02-22 02:21:21 ago) Jul 30 2007 compare
1,220 1.1 (2020-06-22 23:32:36 ago) Jul 30 2007 compare
309 1.4.0 (2026-01-29 07:00:24 ago) Apr 14 2012 compare
2,351 6.0.12 (2025-09-10 13:33:58 ago) Jun 15 2007 compare
6,248 1.19.2 (2026-03-19 21:12:43 ago) Jul 25 2009 compare
1,324 1.11.0 (2026-01-29 07:19:22 ago) Jul 26 2019 compare
1,607 0.4.7 (2026-03-06 09:23:35 ago) Mar 01 2018 compare
2,381 2.0.1 (2024-08-30 08:12:22 ago) Dec 05 2008 compare
223 1.5.2 (2025-12-01 15:40:00 ago) Apr 20 2015 compare
13,863 0.10.0 (2019-02-17 20:14:17 ago) Feb 25 2018 compare
1,517 1.0.5 (2024-02-12 21:10:00 ago) Nov 22 2014 compare
632 1.2.1 (2022-07-02 14:09:28 ago) Jun 09 2011 compare
scrapling new
36,206 0.4.5 (2026-04-07 04:22:27 ago) Aug 01 2024 compare
1,772 2.10.0 (2025-07-25 09:04:22 ago) Jun 01 2013 compare
4,038 v8.0.8 (2026-03-30 15:14:47 ago) Sep 26 2011 compare
14,926 v1.12.0 (2026-03-15 16:28:52 ago) Aug 29 2016 compare
754 Start (2018-02-20 18:47:44 ago) Feb 20 2018 compare
781 v1.3.6 (2026-03-06 04:46:15 ago) Feb 07 2019 compare
739 v1.3.6 (2026-02-23 07:10:29 ago) Jun 08 2019 compare
2,227 v1.2.5 (2022-01-16 14:36:54 ago) Apr 29 2017 compare
218 1.4.0 (2025-08-04 21:07:54 ago) Jul 30 2007 compare
700 0.4.12 (2023-11-19 15:09:54 ago) Jun 03 2007 compare
768 1.1 (2020-10-09 12:50:18 ago) Dec 28 2012 compare
2,103 v4.4.15 (2025-01-02 16:53:09 ago) Oct 26 2013 compare
23 0.6.0 (2023-04-26 10:16:25 ago) Jul 24 2014 compare
- 2.0-RC2 (2019-11-09 15:42:50 ago) Nov 09 2019 compare
165 2.3.0 (2021-03-18 00:10:00 ago) Dec 22 2019 compare
Was this page helpful?