{"repo":"saifyxpro/HeadlessX","free":true,"listed":false,"github":"https://github.com/saifyxpro/HeadlessX","clone":"git clone https://github.com/saifyxpro/HeadlessX.git","description":"The undetected self-hosted browser automation platform. Powered by Camoufox (Firefox) for 0% detection rates. Built for speed, privacy, and scalability.","language":"TypeScript","stars":2233,"topics":["automation","automation-api","automation-platform","browser-automation","browser-testing","browserless","chrome-headless","chromedriver","container-automation","data-extraction","headless","headless-chrome","headless-service","playwright","playwright-automation","puppeteer","scraping-service","web-automation","web-scraping"],"license":"MIT","category":"scraper","readme_excerpt":"<div align=\"center\">\n\n![HeadlessX Logo](assets/logo-hr.svg)\n\n### Self-hosted operators for website extraction, search, and agent workflows powered by Headfox JS and Camoufox\n\n[![Version](https://img.shields.io/badge/Version-v2.1.2-blue?style=for-the-badge)](docs/setup-guide.md)\n[![Runtime](https://img.shields.io/badge/Node.js-22+-339933?style=for-the-badge&logo=nodedotjs&logoColor=white)](https://nodejs.org/)\n[![Next.js](https://img.shields.io/badge/Next.js-16-000000?style=for-the-badge&logo=nextdotjs&logoColor=white)](https://nextjs.org/)\n[![License](https://img.shields.io/badge/License-MIT-black?style=for-the-badge)](LICENSE)\n\n[Setup Guide](https://headlessx.saify.me/docs/self-hosting/overview) • [API Reference](https://headlessx.saify.me/docs/api-reference/overview) • [MCP](https://headlessx.saify.me/docs/get-started/mcp-setup)\n\n</div>\n\n---\n\n<div align=\"center\">\n\n![HeadlessX Demo](assets/demo.gif)\n\n</div>\n\n## Overview\n\nHeadlessX is a self-hosted scraping platform with a web dashboard, protected API, queue-backed workflows, and a remote MCP endpoint.\n\nCurrent live operator surfaces:\n\n- Website operator: scrape, crawl, map, content extraction, screenshots\n- Google AI Search\n- Tavily\n- Exa\n- YouTube\n- Queue jobs, logs, API keys, proxy management, and config management\n- Remote MCP over `/mcp`\n\nImportant operator setup notes:\n\n- Google AI Search requires a one-time `Build Cookies` run in the dashboard before the first search\n- the saved Google session is kept in the shared persistent browser profile and reused later\n- the YouTube workspace is active only when `YT_ENGINE_URL` points at a healthy `yt-engine` service\n\n## What Changed In v2.1.2\n\n- Added the published HeadlessX CLI bootstrap flow with `headlessx init`, `start`, `logs`, `stop`, `restart`, `status`, and `doctor`\n- Upgraded the CLI prompt UX with guided modern setup and login prompts\n- Added Docker plus Caddy production domain scaffolding under `infra/domain-setup`\n- Moved local and Docker host defaults to rarer ports to avoid conflicts with common `3000` and `8000` stacks\n- Refreshed setup, CLI, and self-hosting docs around the current operator-first platform layout\n\n## Sponsors\n\n<details open>\n<summary>View</summary>\n\n<table>\n  <tr>\n    <td width=\"440\" align=\"center\" valign=\"middle\">\n      <a href=\"https://birdproxies.com/t/headlessx\">\n        <img src=\"assets/bird-proxy.png\" alt=\"BirdProxies banner\" width=\"420\" />\n      </a>\n    </td>\n    <td valign=\"top\">\n      Hey, we built <a href=\"https://birdproxies.com/t/headlessx\">BirdProxies</a> because proxies shouldn't be complicated or overpriced. Fast residential and ISP proxies in 195+ locations, fair pricing, and real support. Try our FlappyBird game on the landing page for free data!\n      <br />\n      <a href=\"https://birdproxies.com/t/headlessx\"><strong>Try BirdProxies now</strong></a> &nbsp;|&nbsp; <a href=\"https://discord.com/invite/birdproxies\"><strong>Join the Discord</strong></a>\n    </td>\n  </tr>\n  <tr>\n    <td width=\"440\" align=\"center\" valign=\"middle\">\n      <a href=\"https://www.swiftproxy.net/?ref=HeadlessX\">\n        <img src=\"assets/swiftproxy.png\" alt=\"Swiftproxy banner\" width=\"420\" />\n      </a>\n    </td>\n    <td valign=\"top\">\n      <strong>Swiftproxy</strong> — Reliable residential proxies optimized for HeadlessX automation and anti-bot workflows. Access 80M+ rotating residential IPs across 190+ countries with non-expiring traffic, high anonymity, sticky sessions, and free trials. Get 10% off with code <strong>PROXY90</strong>.\n      <br />\n      <a href=\"https://www.swiftproxy.net/?ref=HeadlessX\"><strong>Try Swiftproxy now</strong></a> &nbsp;|&nbsp; <a href=\"https://t.me/Swiftproxy_Support\"><strong>Contact us</strong></a>\n    </td>\n  </tr>\n  <tr>\n    <td width=\"440\" align=\"center\" valign=\"middle\">\n      <a href=\"https://go.nodemaven.com/Saifyxproread\">\n        <img src=\"assets/nodemaven-banner.png\" alt=\"NodeMaven banner\" width=\"420\" />\n      </a>\n    </td>\n    <td valign=\"top\">\n      <strong>NodeMaven</strong> — The most reliable proxy provider with the highest quality IP on the market. Best for automation, web scraping, SEO research, and social media management. 99.9% uptime, sticky sessions up to 7 days, fraud score &lt;97%, no KYC. Use <strong>HEADLESSX35</strong> for 35% off Mobile/Residential or <strong>HEADLESSX40</strong> for 40% off ISP proxies.\n      <br />\n      <a href=\"https://go.nodemaven.com/Saifyxproread\"><strong>Try NodeMaven now</strong></a>\n    </td>\n  </tr>\n</table>\n\n</details>\n\n## Operators\n\n<div align=\"center\">\n\n![HeadlessX Live Operators](assets/live_scrapers.png)\n\n</div>\n\n### Coming Soon\n\n| Operator | Description | Status |\n| --- | --- | --- |\n| Google Maps | Extract business listings, reviews, categories, ratings, contact details, opening hours, and location metadata from Google Maps search results. | Planned |\n| Twitter / X | Capture profiles, posts, engagement metrics, media, hashtags, and conversation threads from public X pages. | Planned |\n| LinkedIn | Extract public company and profile data, role details, locations, website links, and business metadata from LinkedIn surfaces. | Planned |\n| Instagram | Collect public profile data, captions, post metadata, media links, reels references, and engagement signals. | Planned |\n| Amazon | Extract product listings, seller data, pricing, ratings, reviews, availability, and catalog metadata from Amazon pages. | Planned |\n| Facebook | Capture public page data, posts, about fields, links, follower counts, and engagement metadata from Facebook pages. | Planned |\n| Reddit | Extract subreddit, post, comment, author, score, flair, and discussion metadata from Reddit threads and listings. | Planned |\n| ThomasNet Suppliers Real-Time Scraper | Extract 70+ ThomasNet supplier fields including emails, phone numbers, company data, products, locations, certifications, and more. | Planned |\n| TLS Appointment Booker | Automate TLS appointment availability checks and booking workflows with support for high-frequency monitoring and retry-safe session handling. | Planned |\n| GlobalSpec Suppliers Scraper | Extract 200,000+ industrial supplier profiles from GlobalSpec Engineering360 with contact data, business type, product catalogs, specs, and datasheets. | Planned |\n| ImportYeti Scraper | Extract supplier profiles, shipment records, and trade data from ImportYeti with 60+ fields including HS codes, shipping lanes, carriers, bills of lading, trading partners, and contact info. | Planned |\n| MakersRow Scraper | Extract 11,600+ US manufacturer profiles from MakersRow with email, phone, address, website, GPS coordinates, capabilities, ratings, gallery images, and business hours. | Planned |\n\n## Agent Surfaces Coming Soon\n\n| Surface | Description | Status |\n| --- | --- | --- |\n| Web AI Agent (`/web`) | Interactive AI agent workspace inside the dashboard that can use all HeadlessX operators and related workflow actions, including Website, Google AI Search, Tavily, Exa, and YouTube. | Planned |\n\n## Agent Skills\n\nYou can add the HeadlessX CLI skill to AI coding agents such as Cursor, Claude Code, Warp, Windsurf, OpenCode, OpenClaw, Antigravity, and similar tools that support the `skills` installer flow.\n\n```bash\nnpx skills add https://github.com/saifyxpro/HeadlessX --skill cli\n```\n\nThis installs the HeadlessX CLI skill from this repository so the agent can use the published `headlessx` command and follow the packaged usage guidance.\n\n## UI Screenshots\n\n### Google AI Search (Recently Tested with Arabic Lang & Region)\n![Google AI Search UI](assets/google-serp-results.png)\n\n### Website\n![Website UI](assets/web-scrape-results.png)\n\n## Proof\n\n### BrowserScan\n![BrowserScan](assets/Browserscan_Bot_Detection_Passed.png)\n\n<details>\n<summary>Cloudflare Challenge</summary>\n\n![Cloudflare Challenge](assets/cloudfare.png)\n\n</details>\n\n<table>\n  <tr>\n    <td valign=\"top\" width=\"50%\">\n\n### Pixelscan\n![Pixelscan](assets/Pixel_Human_Detection.png)\n\n  </td>\n    <td valign=\"top\" width=\"50%\">\n\n### Proxy Validation\n![Proxy Validation](assets/USA_PROXY_TESTED.png)\n\n  </td>\n  </tr>\n</table>\n\n## Quick Start\n\n### System Requirements\n\n| Item | Minimum | Recommended |\n| --- | --- | --- |\n| OS | macOS, Linux, or Windows 11 with WSL2 | Ubuntu 22.04+/24.04, Debian 12, or Windows 11 with WSL2 |\n| CPU | 2 cores | 4+ cores |\n| RAM | 4 GB | 8-16 GB |\n| Disk | 10 GB free | 20+ GB SSD |\n| Network | outbound internet for installs, browser downloads, and APIs | stable broadband |\n\n### Runtime Dependencies\n\n- Node.js 22+\n- pnpm 10.32.1+\n- Git\n- Docker + Compose v2 for self-host or production mode\n- PostgreSQL\n- Redis\n- Python/uv for `yt-engine`\n- Go for the HTML-to-Markdown sidecar\n\nIf your machine does not already use the pinned pnpm release, align it with:\n\n```bash\ncorepack enable\ncorepack use pnpm@10.32.1\n```\n\n### Practical Sizing Notes\n\n- 4 GB RAM is enough for light local testing\n- 8 GB RAM is the better baseline for the web, API, worker, Redis, and browser runtime together\n- 16 GB RAM is safer for heavier crawl jobs, YouTube flows, or multiple concurrent browser tasks\n\n### CLI Bootstrap\n\nHeadlessX is now CLI-first for installation and local lifecycle management.\n\n```bash\nnpm install -g @headlessx-cli/core\nheadlessx init\nheadlessx status\nheadlessx doctor\n```\n\nThe CLI bootstraps HeadlessX into `~/.headlessx` by default and supports three setup modes:\n\n- `developer`: clone the repo, keep app services local, and use Docker only where needed for infrastructure\n- `self-host`: run the full HeadlessX stack on rare localhost ports with Docker\n- `production`: run the Docker app stack plus the Caddy/domain layer for `dashboard.yourdomain.com` and `api.yourdomain.com`\n\nUseful examples:\n\n```bash\nheadlessx init --mode developer\nheadlessx init --mode self-host\nheadlessx init --mode production --api-domain api.example.com --web-domain dashboard.example.com --caddy-email ops@example.com\nheadlessx init update\nheadlessx init update --branch develop\nheadlessx start\nheadlessx logs\nheadlessx resta","default_branch":"main","files":427,"tree":[".dockerignore",".env.example",".eslintignore",".github/DISCUSSION_CATEGORIES.md",".github/DISCUSSION_TEMPLATE/announcements.yml",".github/DISCUSSION_TEMPLATE/ideas.yml",".github/DISCUSSION_TEMPLATE/q-and-a.yml",".github/FUNDING.yml",".github/ISSUE_TEMPLATE/bug_report.yml",".github/ISSUE_TEMPLATE/feature_request.yml",".github/ISSUE_TEMPLATE/security.yml",".github/pull_request_template.md",".gitignore",".npmrc",".nx/cache/run.json",".nx/cache/terminalOutputs/10426369805423080669",".nx/workspace-data/file-map.json",".nx/workspace-data/lockfile-dependencies.hash",".nx/workspace-data/lockfile-nodes.hash",".nx/workspace-data/nx_files.nxt",".nx/workspace-data/parsed-lock-file.dependencies.json",".nx/workspace-data/parsed-lock-file.nodes.json",".nx/workspace-data/project-graph.json",".nx/workspace-data/source-maps.json",".prettierrc.json",".semgrepignore","AGENTS.md","CONTRIBUTING.md","LICENSE","README.md","apps/api/.npmrc","apps/api/package-lock.json","apps/api/package.json","apps/api/prisma.config.ts","apps/api/prisma/migrations/20260129070536_init_v2_schema/migration.sql","apps/api/prisma/migrations/20260314090000_add_queue_jobs/migration.sql","apps/api/prisma/migrations/20260314153000_add_crawl_queue_type/migration.sql","apps/api/prisma/migrations/migration_lock.toml","apps/api/prisma/schema.prisma","apps/api/src/app.ts","apps/api/src/controllers/RequestController.ts","apps/api/src/controllers/ai/ExaController.ts","apps/api/src/controllers/ai/TavilyController.ts","apps/api/src/controllers/config/ConfigController.ts","apps/api/src/controllers/dashboard/DashboardController.ts","apps/api/src/controllers/jobs/QueueJobController.ts","apps/api/src/controllers/media/YoutubeController.ts","apps/api/src/controllers/playground/OperatorsController.ts","apps/api/src/controllers/proxy/ProxyController.ts","apps/api/src/controllers/scrape/GoogleSerpController.ts","apps/api/src/controllers/scrape/ScrapeController.ts","apps/api/src/controllers/scrape/ScrapeControllerV2.ts","apps/api/src/controllers/scrape/StreamingScrapeController.ts","apps/api/src/controllers/scrape/WebsiteWorkflowController.ts","apps/api/src/database/client.ts","apps/api/src/env.ts","apps/api/src/mcp/annotations.ts","apps/api/src/mcp/auth.ts","apps/api/src/mcp/formatters.ts","apps/api/src/mcp/registerTools.ts","apps/api/src/mcp/responses.ts","apps/api/src/mcp/schemas.ts","apps/api/src/mcp/server.ts","apps/api/src/mcp/tools/exaTools.ts","apps/api/src/mcp/tools/googleSerpTools.ts","apps/api/src/mcp/tools/jobTools.ts","apps/api/src/mcp/tools/tavilyTools.ts","apps/api/src/mcp/tools/websiteTools.ts","apps/api/src/mcp/tools/youtubeTools.ts","apps/api/src/mcp/types.ts","apps/api/src/middleware/ApiKeyGuard.ts","apps/api/src/middleware/RequestLogger.ts","apps/api/src/routes/ai/exaRoutes.ts","apps/api/src/routes/ai/tavilyRoutes.ts","apps/api/src/routes/config/configRoutes.ts","apps/api/src/routes/dashboard/dashboardRoutes.ts","apps/api/src/routes/jobs/jobRoutes.ts","apps/api/src/routes/keysRoutes.ts","apps/api/src/routes/logsRoutes.ts","apps/api/src/routes/media/youtubeRoutes.ts","apps/api/src/routes/playground/playgroundRoutes.ts","apps/api/src/routes/proxy/proxyRoutes.ts","apps/api/src/routes/scrape/googleSerpRoutes.ts","apps/api/src/routes/scrape/websiteRoutes.ts","apps/api/src/routes/v1.ts","apps/api/src/routes/v2.ts","apps/api/src/server_entry.ts","apps/api/src/services/CaptchaSolverService.ts","apps/api/src/services/JobManager.ts","apps/api/src/services/ai/ExaService.ts","apps/api/src/services/ai/TavilyService.ts","apps/api/src/services/auth/ApiKeyAuthService.ts","apps/api/src/services/config/ConfigService.ts","apps/api/src/services/media/YoutubeEngineService.ts","apps/api/src/services/playground/OperatorCatalogService.ts","apps/api/src/services/proxy/ProxyConnection.ts","apps/api/src/services/proxy/ProxyService.ts","apps/api/src/services/queue/QueueJobService.ts","apps/api/src/services/queue/QueueWorker.ts","apps/api/src/services/queue/cancellationChannel.ts","apps/api/src/services/queue/jobFormatter.ts","apps/api/src/services/queue/jobSchemas.ts","apps/api/src/services/queue/queueConfig.ts","apps/api/src/services/queue/redis.ts","apps/api/src/services/scrape/BrowserService.ts","apps/api/src/services/scrape/CloudflareChallengeService.ts","apps/api/src/services/scrape/GoogleSerpService.ts","apps/api/src/services/scrape/MarkdownService.ts","apps/api/src/services/scrape/ScraperService.ts","apps/api/src/services/scrape/StreamingScraperService.ts","apps/api/src/services/scrape/WebsiteCrawlService.ts","apps/api/src/services/scrape/WebsiteDiscoveryService.ts","apps/api/src/services/scrape/WebsiteLinkUtils.ts","apps/api/src/types/wavefile.d.ts","apps/api/src/utils/pageStability.ts","apps/api/src/utils/paths.ts","apps/api/src/utils/security.ts","apps/api/src/worker_entry.ts","apps/api/tsconfig.json","apps/go-html-to-md-service/Dockerfile","apps/go-html-to-md-service/converter.go","apps/go-html-to-md-service/go.mod","apps/go-html-to-md-service/go.sum","apps/go-html-to-md-service/handler.go","apps/go-html-to-md-service/headlessx-go-html-to-md-service","apps/go-html-to-md-service/main.go","apps/web/.gitignore","apps/web/.npmrc","apps/web/README.md","apps/web/eslint.config.mjs","apps/web/mdx-components.tsx","apps/web/mdx.config.mjs","apps/web/next.config.ts","apps/web/package.json","apps/web/postcss.config.mjs","apps/web/public/favicon.svg","apps/web/public/icons/amazon.svg","apps/web/public/icons/amazon.webp","apps/web/public/icons/exa.svg","apps/web/public/icons/facebook.svg","apps/web/public/icons/google-maps.svg","apps/web/public/icons/google.svg","apps/web/public/icons/instagram.svg","apps/web/public/icons/linkedin.svg","apps/web/public/icons/reddit.svg","apps/web/public/icons/tavily.svg","apps/web/public/icons/tiktok.svg","apps/web/public/icons/twitter.svg","apps/web/public/icons/youtube.svg","apps/web/public/logo.svg","apps/web/public/nodemaven-banner.png","apps/web/public/nodemaven-square-icon.png","apps/web/src/app/(dashboard)/page.tsx","apps/web/src/app/agent/page.tsx","apps/web/src/app/api-keys/page.tsx","apps/web/src/app/api/[...path]/route.ts","apps/web/src/app/error.tsx","apps/web/src/app/global-error.tsx","apps/web/src/app/globals.css","apps/web/src/app/layout.tsx","apps/web/src/app/logs/page.tsx","apps/web/src/app/playground/loading.tsx","apps/web/src/app/playground/operators/exa/loading.tsx","apps/web/src/app/playground/operators/exa/page.tsx","apps/web/src/app/playground/operators/google/ai-search/loading.tsx","apps/web/src/app/playground/operators/google/ai-search/page.tsx","apps/web/src/app/playground/operators/google/loading.tsx","apps/web/src/app/playground/operators/google/page.tsx","apps/web/src/app/playground/operators/loading.tsx","apps/web/src/app/playground/operators/page.tsx","apps/web/src/app/playground/operators/tavily/loading.tsx","apps/web/src/app/playground/operators/tavily/page.tsx","apps/web/src/app/playground/operators/website/crawl/page.tsx","apps/web/src/app/playground/operators/website/loading.tsx","apps/web/src/app/playground/operators/website/map/page.tsx","apps/web/src/app/playground/operators/website/page.tsx","apps/web/src/app/playground/operators/website/scrape/content/page.tsx","apps/web/src/app/playground/operators/website/scrape/html-js/page.tsx","apps/web/src/app/playground/operators/website/scrape/html/page.tsx","apps/web/src/app/playground/operators/website/scrape/page.tsx","apps/web/src/app/playground/operators/website/scrape/screenshot/page.tsx","apps/web/src/app/playground/operators/youtube/loading.tsx","apps/web/src/app/playground/operators/youtube/page.tsx","apps/web/src/app/playground/page.tsx","apps/web/src/app/providers.tsx","apps/web/src/app/settings/page.tsx","apps/web/src/components/DocsPageActions.tsx","apps/web/src/components/LogDrawer.tsx","apps/web/src/components/MDXCodeBlock.tsx","apps/web/src/components/api-keys/ApiKeysList.tsx","apps/web/src/components/api-keys/ApiKeysSkeleton.tsx","apps/web/src/components/api-keys/CreateKeyDialog.tsx","apps/web/src/components/api-keys/DeleteKeyDialog.tsx","apps/web/src/components/dashboard/Overview.tsx","apps/web/src/components/dashboard/OverviewSkeleton.tsx","apps/web/src/components/dashboard/Sidebar.tsx","apps/web/src/components/playground/PlaygroundClient.tsx","apps/web/src/components/playground/exa/ExaHeader.tsx","apps/web/src/components/playground/exa/ExaWorkbench.tsx","apps/web/src/components/playground/exa/config/ActionButtons.tsx","apps/web/src/components/playground/exa/config/ConfigurationPanel.tsx","apps/web/src/components/playground/exa/index.ts","apps/web/src/components/playground/exa/results/EmptyState.tsx","apps/web/src/components/playground/exa/results/ProgressState.tsx","apps/web/src/components/playground/exa/results/ResultsHeader.tsx","apps/web/src/components/playground/exa/results/ResultsPanel.tsx","apps/web/src/components/playground/exa/types.ts","apps/web/src/components/playground/exa/utils.ts","apps/web/src/components/playground/google/AdvancedSettings.tsx","apps/web/src/components/playground/google/ConfigurationPanel.tsx","apps/web/src/components/playground/google/GoogleSerpHeader.tsx","apps/web/src/components/playground/google/ResultsPanel.tsx","apps/web/src/components/playground/google/types.ts","apps/web/src/components/playground/shared/AdvancedSettingsDialog.tsx","apps/web/src/components/playground/shared/ConfigPanelShell.tsx","apps/web/src/components/playground/shared/PlaygroundEmptyState.tsx","apps/web/src/components/playground/shared/PlaygroundHeaderShell.tsx","apps/web/src/components/playground/shared/PlaygroundSkeletons.tsx","apps/web/src/components/playground/shared/ResultsPanelShell.tsx","apps/web/src/components/playground/shared/VideoPreviewCard.tsx","apps/web/src/components/playground/shared/WorkbenchLayout.tsx","apps/web/src/components/playground/shared/index.ts","apps/web/src/components/playground/tavily/TavilyHeader.tsx","apps/web/src/components/playground/tavily/TavilyWorkbench.tsx","apps/web/src/components/playground/tavily/config/ActionButtons.tsx","apps/web/src/components/playground/tavily/config/ConfigurationPanel.tsx","apps/web/src/components/playground/tavily/index.ts","apps/web/src/components/playground/tavily/results/EmptyState.tsx","apps/web/src/components/playground/tavily/results/ProgressState.tsx","apps/web/src/components/playground/tavily/results/ResultsHeader.tsx","apps/web/src/components/playground/tavily/results/ResultsPanel.tsx","apps/web/src/components/playground/tavily/types.ts","apps/web/src/components/playground/tavily/utils.ts","apps/web/src/components/playground/website/ScraperHeader.tsx","apps/web/src/components/playground/website/WebsiteWorkbench.tsx","apps/web/src/components/playground/website/config/ActionButtons.tsx","apps/web/src/components/playground/website/config/AdvancedSettings.tsx","apps/web/src/components/playground/website/config/ConfigurationPanel.tsx","apps/web/src/components/playground/website/config/CustomDropdown.tsx","apps/web/src/components/playground/website/config/PathPatternFields.tsx","apps/web/src/components/playground/website/config/ToggleRow.tsx","apps/web/src/components/playground/website/config/UrlField.tsx","apps/web/src/components/playground/website/config/index.ts","apps/web/src/components/playground/website/hooks/index.ts","apps/web/src/components/playground/website/hooks/useWebsiteResultState.ts","apps/web/src/components/playground/website/hooks/useWebsiteStorage.ts","apps/web/src/components/playground/website/index.ts","apps/web/src/components/playground/website/results/CrawlPageDialog.tsx","apps/web/src/components/playground/website/results/CrawlResults.tsx","apps/web/src/components/playground/website/results/EmptyState.tsx","apps/web/src/components/playground/website/results/MapResults.tsx","apps/web/src/components/playground/website/results/ProgressState.tsx","apps/web/src/components/playground/website/results/ResultStat.tsx","apps/web/src/components/playground/website/results/ResultsHeader.tsx","apps/web/src/components/playground/website/results/ResultsPanel.tsx","apps/web/src/components/playground/website/results/ScrapePreview.tsx","apps/web/src/components/playground/website/results/index.ts","apps/web/src/components/playground/website/shared/index.ts","apps/web/src/components/playground/website/shared/stream.ts","apps/web/src/components/playground/website/types.ts","apps/web/src/components/playground/youtube/YouTubeHeader.tsx","apps/web/src/components/playground/youtube/YouTubeWorkbench.tsx","apps/web/src/components/playground/youtube/config/ActionButtons.tsx","apps/web/src/components/playground/youtube/config/ConfigurationPanel.tsx","apps/web/src/components/playground/youtube/index.ts","apps/web/src/components/playground/youtube/results/EmptyState.tsx","apps/web/src/components/playground/youtube/results/ProgressSteps.tsx","apps/web/src/components/playground/youtube/results/ResultsHeader.tsx","apps/web/src/components/playground/youtube/results/ResultsPanel.tsx","apps/web/src/components/playground/youtube/results/SaveVideoDialog.tsx","apps/web/src/components/playground/youtube/types.ts","apps/web/src/components/playground/youtube/utils.ts","apps/web/src/components/settings/NodeMavenProxyCallout.tsx","apps/web/src/components/ui/CustomDropdown.tsx","apps/web/src/components/ui/PageHeader.tsx","apps/web/src/components/ui/Skeleton.tsx","apps/web/src/components/ui/badge.tsx","apps/web/src/components/ui/button.tsx","apps/web/src/components/ui/card.tsx","apps/web/src/components/ui/delete-button.tsx","apps/web/src/components/ui/dialog.tsx","apps/web/src/components/ui/drawer.tsx","apps/web/src/components/ui/input.tsx","apps/web/src/components/ui/stacked-list.tsx","apps/web/src/components/ui/status-button.tsx","apps/web/src/components/ui/swipe-button.tsx","apps/web/src/components/ui/switch.tsx","apps/web/src/contexts/SidebarContext.tsx","apps/web/src/data/googleLanguages.json","apps/web/src/data/googleRegions.json","apps/web/src/lib/playgroundAvailability.ts","apps/web/src/lib/utils.ts","apps/web/src/mdx-components.tsx","apps/web/src/mdx.d.ts","apps/web/tailwind.config.ts","apps/web/tsconfig.json","apps/yt-engine/app/__init__.py","apps/yt-engine/app/main.py","apps/yt-engine/app/schemas.py","apps/yt-engine/app/service.py","apps/yt-engine/pyproject.toml","apps/yt-engine/uv.lock","assets/Browserscan_Bot_Detection_Passed.png","assets/Pixel_Human_Detection.png","assets/USA_PROXY_TESTED.png","assets/bird-proxy.png","assets/cloudfare.png","assets/demo.gif","assets/google-serp-results.png","assets/live_scrapers.png","assets/logo-hr.svg","assets/nodemaven-banner.png","assets/nodemaven-square-icon.png","assets/swiftproxy.png","assets/web-scrape-results.png","audit-results.json","biome.json","docs/CLI.md","docs/CODE_OF_CONDUCT.md","docs/CONTRIBUTING.md","docs/ETHICS.md","docs/SECURITY.md","docs/api-endpoints.md","docs/plans/2026-03-07-dashboard-layout-normalization-design.md","docs/plans/2026-03-07-logs-page-design.md","docs/plans/2026-03-07-logs-ux-design.md","docs/plans/2026-03-07-security-hardening-design.md","docs/plans/2026-03-14-dashboard-hover-consistency-design.md","docs/plans/2026-03-14-flat-playground-ui-design.md","docs/plans/2026-03-14-website-workflows-design.md","docs/plans/2026-03-16-headlessx-mcp-design.md","docs/plans/2026-03-19-pending-commits.md","docs/plans/2026-03-25-google-cookie-bootstrap-design.md","docs/setup-guide.md","infra/docker/.env.example","infra/docker/api-entrypoint.sh","infra/docker/api.Dockerfile","infra/docker/docker-compose.yml","infra/docker/web.Dockerfile","infra/docker/worker-entrypoint.sh","infra/docker/yt-engine.Dockerfile","infra/domain-setup/.env.example","infra/domain-setup/Caddyfile.template","infra/domain-setup/README.md","infra/domain-setup/docker-compose.yml","knip.json","mise.toml","nx.json","package.json","packages/.gitkeep","packages/cli/.claude-plugin/marketplace.json","packages/cli/.claude-plugin/plugin.json","packages/cli/.gitignore","packages/cli/.npmignore","packages/cli/.prettierrc.json","packages/cli/README.md","packages/cli/package.json","packages/cli/pnpm-lock.yaml","packages/cli/scripts/prepare.mjs","packages/cli/src/__tests__/README.md","packages/cli/src/__tests__/lifecycle.test.ts","packages/cli/src/commands/config.ts","packages/cli/src/commands/crawl.ts","packages/cli/src/commands/exa.ts","packages/cli/src/commands/google.ts","packages/cli/src/commands/jobs.ts","packages/cli/src/commands/lifecycle.ts","packages/cli/src/commands/login.ts","packages/cli/src/commands/logout.ts","packages/cli/src/commands/map.ts","packages/cli/src/commands/operators.ts","packages/cli/src/commands/scrape.ts","packages/cli/src/commands/status.ts","packages/cli/src/commands/tavily.ts","packages/cli/src/commands/youtube.ts","packages/cli/src/index.ts","packages/cli/src/utils/config.ts","packages/cli/src/utils/credentials.ts","packages/cli/src/utils/http.ts","packages/cli/src/utils/lifecycle.ts","packages/cli/src/utils/output.ts","packages/cli/src/utils/ui.ts","packages/cli/src/utils/workspace.ts","packages/cli/tsconfig.json","packages/cli/vitest.config.mjs","packages/headfox-js/.gitignore","packages/headfox-js/LICENSE.md","packages/headfox-js/README.md","packages/headfox-js/bin/headfox-js.mjs","packages/headfox-js/biome.json","packages/headfox-js/copy-data-files.mjs","packages/headfox-js/package.json","packages/headfox-js/src/__main__.ts","packages/headfox-js/src/__version__.ts","packages/headfox-js/src/addons.ts","packages/headfox-js/src/data-files/territoryInfo.xml","packages/headfox-js/src/exceptions.ts","packages/headfox-js/src/fingerprints.ts","packages/headfox-js/src/index.ts","packages/headfox-js/src/ip.ts"],"storefront":"/r/saifyxpro","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/saifyxpro/HeadlessX/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}