{"_id":"parkpana-tiktok-scraper","name":"parkpana-tiktok-scraper","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"parkpana-tiktok-scraper","version":"1.0.0","description":"TikTok Scraper & Downloader — scoped fork maintained by @parkpana. Scrape user/hashtag/trend/music feeds and download videos.","main":"./build/index.js","types":"./build/index.d.ts","bin":{"tiktok-scraper":"bin/cli.js"},"engines":{"node":">=18.0.0"},"dependencies":{"@json2csv/plainjs":"^7.0.6","archiver":"^7.0.1","async":"^3.2.6","bluebird":"^3.7.2","got":"^11.8.6","ora":"^5.4.1","progress":"^2.0.3","socks-proxy-agent":"^8.0.4","tough-cookie":"^4.1.4","jsdom":"^25.0.1"},"devDependencies":{"@types/archiver":"^6.0.3","@types/async":"^3.2.24","@types/bluebird":"^3.5.42","@types/jsdom":"^21.1.7","@types/jest":"^29.5.14","@types/node":"^22.10.7","@types/progress":"^2.0.7","@types/tough-cookie":"^4.0.5","@typescript-eslint/eslint-plugin":"^8.19.1","@typescript-eslint/parser":"^8.19.1","eslint":"^9.17.0","jest":"^29.7.0","rimraf":"^6.0.1","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.3"},"scripts":{"build":"rimraf build && tsc","lint":"eslint ./src/**/*.ts","test":"jest --coverage --verbose","prepublishOnly":"npm run build"},"jest":{"verbose":true,"preset":"ts-jest","testEnvironment":"node","testRegex":"(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleFileExtensions":["ts","tsx","js","jsx","json","node"]},"repository":{"type":"git","url":"git+https://github.com/parkpana/tiktok-scraper.git"},"keywords":["TikTok","Scraper","Downloader","parkpana"],"author":{"name":"parkpana"},"license":"MIT","publishConfig":{"access":"public"},"_id":"parkpana-tiktok-scraper@1.0.0","bugs":{"url":"https://github.com/parkpana/tiktok-scraper/issues"},"homepage":"https://github.com/parkpana/tiktok-scraper#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-SEMG4ntssNu58iHudu6x6/52iOR1rxOzMJX8PlN+BssYxolaB65Znz0ovatCnPk0JNACywfjZZxuX68IMUUuiQ==","shasum":"cafa9fad462d1f12dba19459fc36c6429db638b3","tarball":"https://registry.npmjs.org/parkpana-tiktok-scraper/-/parkpana-tiktok-scraper-1.0.0.tgz","fileCount":33,"unpackedSize":146945,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDY5F2ZeG+6jOWOoiDknpBEzPFv0qaY+CAZzdk7AhUMgAIhAKiZN9gmGo9ChnAk6D0WmYgK6IgYA8tBYOqRWzw4gRme"}]},"_npmUser":{"name":"flashshop.xyz","email":"kritsdika@gmail.com"},"directories":{},"maintainers":[{"name":"flashshop.xyz","email":"kritsdika@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/parkpana-tiktok-scraper_1.0.0_1776843152539_0.6181897769433611"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-22T07:32:32.450Z","1.0.0":"2026-04-22T07:32:32.675Z","modified":"2026-04-22T07:32:32.835Z"},"maintainers":[{"name":"flashshop.xyz","email":"kritsdika@gmail.com"}],"description":"TikTok Scraper & Downloader — scoped fork maintained by @parkpana. Scrape user/hashtag/trend/music feeds and download videos.","homepage":"https://github.com/parkpana/tiktok-scraper#readme","keywords":["TikTok","Scraper","Downloader","parkpana"],"repository":{"type":"git","url":"git+https://github.com/parkpana/tiktok-scraper.git"},"author":{"name":"parkpana"},"bugs":{"url":"https://github.com/parkpana/tiktok-scraper/issues"},"license":"MIT","readme":"# @parkpana/tiktok-scraper\n\n[![npm version](https://badge.fury.io/js/%40parkpana%2Ftiktok-scraper.svg)](https://www.npmjs.com/package/@parkpana/tiktok-scraper)\n[![Node.js](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen)](https://nodejs.org)\n\nTikTok Scraper & Downloader — modernised fork of [tiktok-scraper](https://github.com/drawrowfly/tiktok-scraper) maintained by **@parkpana**.\n\nSupports **Node.js 18+**, uses `got` (instead of the deprecated `request`) and modern TypeScript 5.\n\n---\n\n## Install\n\n```bash\nnpm install @parkpana/tiktok-scraper\n# or\nyarn add @parkpana/tiktok-scraper\n```\n\n## Quick start (API)\n\n```js\nconst scraper = require('@parkpana/tiktok-scraper');\n\n// Scrape user posts\nconst result = await scraper.user('tiktok', { number: 30 });\nconsole.log(result.collector);\n\n// Scrape hashtag\nconst posts = await scraper.hashtag('summer', { number: 50 });\n\n// Download single video\nawait scraper.video('https://www.tiktok.com/@tiktok/video/1234567890', {\n  download: true,\n  filepath: './downloads',\n});\n```\n\n## Event-based scraping\n\n```js\nconst users = scraper.userEvent('tiktok', { number: 30 });\nusers.on('data', json => console.log(json));\nusers.on('done', () => console.log('Done'));\nusers.on('error', err => console.error(err));\nusers.scrape();\n```\n\n## Options\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `number` | `number` | `30` | Posts to scrape |\n| `download` | `boolean` | `false` | Download video files |\n| `filepath` | `string` | `''` | Save path |\n| `filetype` | `'json'\\|'csv'\\|'all'` | `''` | Output file format |\n| `proxy` | `string\\|string[]` | `''` | HTTP or SOCKS proxy |\n| `sessionList` | `string[]` | `[]` | TikTok session cookies (`sid_tt=...`) |\n| `noWaterMark` | `boolean` | `false` | Remove watermark |\n| `asyncDownload` | `number` | `5` | Concurrent downloads |\n| `timeout` | `number` | `0` | Delay between requests (ms) |\n\n## CLI\n\n```bash\nnpx @parkpana/tiktok-scraper user USERNAME -n 30 -t json\nnpx @parkpana/tiktok-scraper hashtag HASHTAG -n 50 -d\n```\n\n## Changes from original\n\n- **`request` / `request-promise`** replaced with **`got`** (v11, LTS compatible)\n- **`json2csv`** replaced with **`@json2csv/plainjs`** (v7)\n- **`CookieJar`** moved from `request` to **`tough-cookie`**  \n- **TypeScript 5** + **`ES2022`** target\n- **Node.js 18+** minimum\n- Scoped package: `@parkpana/tiktok-scraper`\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-006cea770438426de2a838bdd6a6d1f6"}