{"_id":"@eduair94/ghunt","name":"@eduair94/ghunt","dist-tags":{"latest":"2.3.3"},"versions":{"2.3.3":{"name":"@eduair94/ghunt","version":"2.3.3","description":"GHunt OSINT framework for Google account reconnaissance - TypeScript edition","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"require":"./dist/index.js","import":"./dist/index.js","types":"./dist/index.d.ts"}},"bin":{"ghunt-server":"dist/server/index.js"},"scripts":{"build":"tsc","start":"node dist/server/index.js","dev":"ts-node src/server/index.ts","test":"jest --forceExit","test:watch":"jest --watch --forceExit","test:coverage":"jest --coverage --forceExit","lint":"eslint 'src/**/*.ts'","clean":"rm -rf dist","prepublishOnly":"npm run clean && npm run build"},"keywords":["ghunt","osint","google","reconnaissance"],"license":"AGPL-3.0","devDependencies":{"@types/express":"^4.17.25","@types/jest":"^29.5.12","@types/node":"^20.11.0","@types/supertest":"^6.0.3","@typescript-eslint/eslint-plugin":"^7.0.0","@typescript-eslint/parser":"^7.0.0","eslint":"^8.56.0","jest":"^29.7.0","supertest":"^7.2.2","ts-jest":"^29.1.2","ts-node":"^10.9.2","typescript":"^5.3.3"},"dependencies":{"axios":"^1.13.5","cheerio":"^1.0.0-rc.12","date-fns":"^3.3.1","date-fns-tz":"^3.0.0","express":"^4.22.1"},"engines":{"node":">=18.0.0"},"_id":"@eduair94/ghunt@2.3.3","gitHead":"b23c5cc392ecf9ac8649b02bd1ef4c1b1f4548c7","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-0OQ+gNVfBI47XksJTBcg4RVbmEiEtt1fRC3oeGcLxd8Q7llIZ7MG5OxQvTenojy5nrDs0zv3MRPEAT61z6MjpA==","shasum":"0159aaf7cf4e9ea1465497ea1cbd308b7a93f1b7","tarball":"https://registry.npmjs.org/@eduair94/ghunt/-/ghunt-2.3.3.tgz","fileCount":163,"unpackedSize":297491,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCriINsh/HCcAJGlcfPYXMoi92gacTmw+ARnrsGpf1uFgIhAJDuDfhT5T0B6rY4R5+AG4RiX+D6D0Gizl4UPV6eVZhS"}]},"_npmUser":{"name":"eduair94","email":"airaudoeduardo@gmail.com"},"directories":{},"maintainers":[{"name":"eduair94","email":"airaudoeduardo@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ghunt_2.3.3_1775540470043_0.5094958170913304"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-07T05:41:09.895Z","2.3.3":"2026-04-07T05:41:10.188Z","modified":"2026-04-07T05:41:10.457Z"},"maintainers":[{"name":"eduair94","email":"airaudoeduardo@gmail.com"}],"description":"GHunt OSINT framework for Google account reconnaissance - TypeScript edition","keywords":["ghunt","osint","google","reconnaissance"],"license":"AGPL-3.0","readme":"# GHunt — TypeScript / npm edition\n\n> A TypeScript port of the [GHunt](https://github.com/mxrch/GHunt) OSINT framework for Google account reconnaissance.  \n> Requires credentials obtained via the **original Python GHunt CLI** (shared session store).\n\n---\n\n## Installation\n\n```bash\nnpm install @eduair94/ghunt\n```\n\nNode.js ≥ 18 required.\n\n---\n\n## Prerequisites — Authenticate first\n\nThis package **shares the same credential store** as the Python GHunt CLI.  \nYou must authenticate once using the Python app before using this package:\n\n```bash\npip install ghunt\nghunt login\n```\n\nCredentials are stored at `~/.malfrats/ghunt/accounts/` and are picked up automatically.\n\n---\n\n## Programmatic usage\n\n### `ghuntEmail(email, opts?)`\n\nLook up a Google account by email. Returns the same JSON structure as `ghunt email <addr> --json`.\n\n```ts\nimport { ghuntEmail } from '@eduair94/ghunt';\n\nconst result = await ghuntEmail('target@gmail.com');\n\nconst profile = result.PROFILE_CONTAINER.profile;\nconsole.log(profile.personId);\nconsole.log(profile.emails.PROFILE.value);\nconsole.log(profile.profileInfos.PROFILE.userTypes);\nconsole.log(profile.inAppReachability.PROFILE.apps);\n```\n\n#### Return shape\n\n```ts\n{\n  PROFILE_CONTAINER: {\n    profile: {\n      personId: string;\n      sourceIds:          { PROFILE: { lastUpdated: string | null } };\n      emails:             { PROFILE: { value: string } };\n      names:              Record<string, { fullname: string; firstName: string; lastName: string }>;\n      profileInfos:       { PROFILE: { userTypes: string[] } };\n      profilePhotos:      { PROFILE: { url: string; isDefault: boolean; flathash: null } };\n      coverPhotos:        { PROFILE: { url: string; isDefault: boolean; flathash: null } };\n      inAppReachability:  { PROFILE: { apps: string[] } };\n      extendedData: {\n        dynamiteData: { presence: string; entityType: string; dndState: string; customerId: string };\n        gplusData:    { contentRestriction: string; isEntrepriseUser: boolean };\n      };\n    };\n    play_games: null;\n    maps: { photos: []; reviews: []; stats: {}; failed: string; extracted_reviews: [] };\n    calendar: null;\n  }\n}\n```\n\n#### Options\n\n```ts\nawait ghuntEmail('target@gmail.com', {\n  // Provide a pre-loaded GHuntCreds instance (skip auto-discovery)\n  creds?: GHuntCreds;\n\n  // Override the Python accounts directory (default: ~/.malfrats/ghunt/accounts/)\n  accountsDir?: string;\n\n  // Override the legacy Python creds.m path (default: ~/.malfrats/ghunt/creds.m)\n  pythonCredsPath?: string;\n\n  // Override the JSON creds path (default: ghunt_creds.json in cwd)\n  jsonCredsPath?: string;\n});\n```\n\n---\n\n## HTTP server\n\nYou can also run the built-in Express server which exposes the same data as a REST endpoint:\n\n```bash\nnpx ghunt-server\n# or\nnpm run start   # after building\n```\n\n```\nGET http://127.0.0.1:6032/email?email=target@gmail.com\nGET http://127.0.0.1:6032/health\n```\n\n---\n\n## Credential loading order\n\nThe package tries credential sources in this order (same as the Python CLI):\n\n| Priority | Location | Format |\n|---|---|---|\n| 1st | `~/.malfrats/ghunt/accounts/{active}.creds` | Python multi-account store |\n| 2nd | `~/.malfrats/ghunt/creds.m` | Python legacy session |\n| 3rd | `./ghunt_creds.json` | JSON (TypeScript-only fallback) |\n\n---\n\n## TypeScript types\n\nAll public types are exported from the package root:\n\n```ts\nimport type {\n  GHuntEmailResult,\n  GHuntEmailOptions,\n  GHuntMapsData,\n  NormalizedPerson,\n  GHuntCreds,\n} from '@eduair94/ghunt';\n```\n\n---\n\n## License\n\nAGPL-3.0 — see [LICENSE.md](LICENSE.md).  \nOriginal Python GHunt by [@mxrch](https://github.com/mxrch/GHunt).\n","readmeFilename":"README.md","_rev":"1-28926154498771416d56831b53840894"}