{"id":26339168,"url":"https://github.com/meeehdi-dev/vercel-puppeteer","last_synced_at":"2026-04-12T22:54:15.888Z","repository":{"id":195523823,"uuid":"683695544","full_name":"meeehdi-dev/vercel-puppeteer","owner":"meeehdi-dev","description":"Vercel/Node project for serverless HTML to PDF generation using Puppeteer and Chromium","archived":false,"fork":false,"pushed_at":"2024-05-14T06:04:27.000Z","size":342,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-05-14T07:25:07.824Z","etag":null,"topics":["chromium","puppeteer","serverless","vercel"],"latest_commit_sha":null,"homepage":"https://aosun-puppeteer-kokoro-soft.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/meeehdi-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-27T12:13:40.000Z","updated_at":"2024-05-14T06:04:30.000Z","dependencies_parsed_at":"2024-03-10T09:37:26.161Z","dependency_job_id":"41df278d-b2a7-4ea1-bdb4-b8e6955261be","html_url":"https://github.com/meeehdi-dev/vercel-puppeteer","commit_stats":null,"previous_names":["meeehdi-dev/vercel-puppeteer"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meeehdi-dev%2Fvercel-puppeteer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meeehdi-dev%2Fvercel-puppeteer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meeehdi-dev%2Fvercel-puppeteer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meeehdi-dev%2Fvercel-puppeteer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/meeehdi-dev","download_url":"https://codeload.github.com/meeehdi-dev/vercel-puppeteer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243818131,"owners_count":20352629,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chromium","puppeteer","serverless","vercel"],"created_at":"2025-03-16T03:16:30.789Z","updated_at":"2026-04-12T22:54:10.829Z","avatar_url":"https://github.com/meeehdi-dev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Vercel Puppeteer\n\nVercel Puppeteer is a simple vercel/node project allowing to use puppeteer with vercel serverless functions.\n\n*The vercel.json attached to the project only works for Vercel Pro subscriptions. You can try to lower the specs if you use the free tier but I don't recommend it due to the 10 second timeout.*\n\n## Dependencies\n\nchromium-min: [Github](https://github.com/sparticuz/chromium) by [Sparticuz](https://github.com/Sparticuz)  \npuppeteer-core: [Github](https://github.com/puppeteer/puppeteer)\n\nYou'll also need to host a chromium-pack, downloadable via Sparticuz's [chromium releases](https://github.com/Sparticuz/chromium/releases). I personally use AWS S3. Just make sure it's a fast delivery service to avoid any timeout on your serverless function.\n\n\n## Installation\n\nClone the repo.\n```\ngit clone git@github.com:meeehdi-dev/vercel-puppeteer.git\n```\nInstall the dependencies.\n```\npnpm i\n```\nSet up your environment variables.\n```\nTOKEN=\"XXX\"\n# Public path to chromium pack\nCHROMIUM_PATH=\"https://storage.example.org/chromium-pack.tar\"\n# or if using a private S3 bucket\nAWS_S3_REGION=\"eu-west-3\"\nAWS_S3_BUCKET=\"private-bucket\"\nAWS_S3_KEY=\"chromium-pack.tar\"\nAWS_ACCESS_KEY_ID=\"KEY_ID\"\nAWS_SECRET_ACCESS_KEY=\"ACCESS_KEY\"\n```\nDeploy using Vercel CLI (don't forget to set the env vars in the dashboard).\n```\nvercel deploy\n```\n\n## Usage\n\nSend a request with a \"X-TOKEN\" header and a body containing the HTML content you want transformed as a PDF.\n\n\n### Using Curl\n```bash\ncurl -X POST -L \"https://puppeteer.example.org/api/pdf\" -d \"\u003chtml\u003e\u003cbody\u003e\u003cdiv\u003eHello world!\u003c/div\u003e\u003c/body\u003e\u003c/html\u003e\" -H \"Content-Type: text/plain\" -H \"X-TOKEN: ENV_TOKEN\" -o \"test.pdf\"\n```\n\n\n### Using NodeJS (with [node-fetch](https://github.com/node-fetch/node-fetch))\n```typescript\nconst response = await fetch(\"https://puppeteer.example.org/api/pdf\", {\n    method: \"POST\",\n    body: html,\n    headers: {\n      \"X-TOKEN\": ENV_TOKEN,\n    },\n});\n\n// transform the pdf into a buffer\nconst arrayBuffer = await response.arrayBuffer();\nconst buffer = Buffer.from(arrayBuffer);\nreturn buffer;\n```\n\n## TODO\n\nThis list is just a reminder for improvements but I'm probably not going to work on them right now.\n\n[] Move the browser inititialization to a utils file  \n[] Add other API endpoints (e.g. /screenshot)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeeehdi-dev%2Fvercel-puppeteer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeeehdi-dev%2Fvercel-puppeteer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeeehdi-dev%2Fvercel-puppeteer/lists"}