{"id":41690,"library":"osm-pbf-parser-node","title":"osm-pbf-parser-node","description":"Streaming OpenStreetMap PBF parser for Node.js. Version 1.1.4. Parses .osm.pbf files into a readable stream of OSM entities (header, nodes, ways, relations). Built for modern Node (16.13+). Exports an async generator (createOSMStream) and a Transform class (OSMTransform). Supports filtering tags per entity type, raw PBF blocks, and optional metadata. Ships TypeScript definitions.","status":"active","version":"1.1.4","language":"javascript","source_language":"en","source_url":"https://github.com/borisgontar/osm-pbf-parser-node","tags":["javascript","node.js","OSM","OpenStreetMap","protobuf","pbf","streaming","parser","typescript"],"install":[{"cmd":"npm install osm-pbf-parser-node","lang":"bash","label":"npm"},{"cmd":"yarn add osm-pbf-parser-node","lang":"bash","label":"yarn"},{"cmd":"pnpm add osm-pbf-parser-node","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Used for HTTP streaming if input is a URL (though not shown in README, dep check may reveal)","package":"node-fetch","optional":true}],"imports":[{"note":"ESM-only package; require() will fail. Use dynamic import if needed in CJS: import('osm-pbf-parser-node').then(m => m.createOSMStream(...))","wrong":"const { createOSMStream } = require('osm-pbf-parser-node')","symbol":"createOSMStream","correct":"import { createOSMStream } from 'osm-pbf-parser-node'"},{"note":"Named export, not default. Also requires 'node:stream' Transform for piping.","wrong":"import OSMTransform from 'osm-pbf-parser-node'","symbol":"OSMTransform","correct":"import { OSMTransform } from 'osm-pbf-parser-node'"},{"note":"TypeScript only. Use type import for better tree-shaking.","wrong":null,"symbol":"OSMOptions","correct":"import type { OSMOptions } from 'osm-pbf-parser-node'"}],"quickstart":{"code":"import { createOSMStream } from 'osm-pbf-parser-node';\nimport { createWriteStream } from 'node:fs';\n\nasync function main() {\n  const filePath = 'input.osm.pbf';\n  const outputPath = 'output.jsonl';\n  const writeStream = createWriteStream(outputPath, { flags: 'a' });\n  try {\n    for await (const item of createOSMStream(filePath, { withTags: true, withInfo: false })) {\n      writeStream.write(JSON.stringify(item) + '\\n');\n    }\n  } catch (err) {\n    console.error('Parse error:', err);\n  } finally {\n    writeStream.end();\n  }\n  console.log('Done');\n}\nmain();","lang":"typescript","description":"Parses an .osm.pbf file and writes each OSM entity as a JSON line to an output file."},"warnings":[{"fix":"Use Node 16.13+; if in CommonJS, use dynamic import: const { createOSMStream } = await import('osm-pbf-parser-node');","message":"E-mail only, no CommonJS support. Node 16.13+ required (nullish coalescing operator used).","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Pass { withInfo: true } if you need metadata fields.","message":"Default options: withInfo=false, withTags=true. Metadata (user, uid, changeset) not included unless explicitly enabled.","severity":"gotcha","affected_versions":"*"},{"fix":"Download the .pbf file first, then parse from local path.","message":"File path must be a local file; no direct URL support (despite npm 'node-fetch' dependency being optional for other use).","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Upgrade to 1.x: use createOSMStream instead of older synchronous parse function.","message":"Older versions (<1.0) had a different API. Check migration if upgrading from 0.x.","severity":"deprecated","affected_versions":"<1.0.0"}],"env_vars":null,"search_vec":"'1.1.4':13 '16.13':32 'async':35 'block':51 'built':28 'class':41 'createosmstream':37 'definit':57 'entiti':23,47 'export':33 'file':16 'filter':44 'generat':36 'header':24 'javascript':58 'metadata':54 'modern':30 'node':5,25,31 'node.js':11,59 'openstreetmap':7,61 'option':53 'osm':2,22,60 'osm-pbf-parser-nod':1 'osm.pbf':15 'osmtransform':42 'pars':14 'parser':4,9,65 'pbf':3,8,50,63 'per':46 'protobuf':62 'raw':49 'readabl':19 'relat':27 'ship':55 'stream':6,20,64 'support':43 'tag':45 'transform':40 'type':48 'typescript':56,66 'version':12 'way':26","created_at":"2026-06-04T18:53:38.306851+00:00","updated_at":"2026-06-04T18:53:38.306851+00:00","problems":[{"fix":"Convert to ESM or use dynamic import: const { createOSMStream } = await import('osm-pbf-parser-node');","cause":"Package is ESM-only, but script uses require()","error":"Error [ERR_REQUIRE_ESM]: require() of ES Module /path/to/node_modules/osm-pbf-parser-node/index.js from /path/to/script.js not supported."},{"fix":"Use named import: import { createOSMStream } from 'osm-pbf-parser-node';","cause":"Incorrect import (default instead of named)","error":"TypeError: createOSMStream is not a function"},{"fix":"Run npm install and ensure pbf is in node_modules. If corrupted, delete node_modules and reinstall.","cause":"Missing dependency pbf (should be installed automatically, but manually cleared)","error":"Error: Cannot find module 'pbf'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/borisgontar/osm-pbf-parser-node","github":"https://github.com/borisgontar/osm-pbf-parser-node","docs":null,"changelog":null,"pypi":null,"npm":"osm-pbf-parser-node","openapi_spec":null,"status_page":null,"smithery":null,"categories":["storage"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-04","next_check":"2026-09-02","install_tag":null}}