{"id":47621173,"url":"https://github.com/browserbase/sdk-functions-node","last_synced_at":"2026-04-01T22:11:36.968Z","repository":{"id":337563956,"uuid":"1052815240","full_name":"browserbase/sdk-functions-node","owner":"browserbase","description":"The Browserbase Functions SDK lets you define, develop, and deploy serverless browser automation functions on Browserbase.","archived":false,"fork":false,"pushed_at":"2026-02-10T07:18:50.000Z","size":294,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-10T10:52:19.840Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/browserbase.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-08T15:30:11.000Z","updated_at":"2026-02-10T07:18:54.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/browserbase/sdk-functions-node","commit_stats":null,"previous_names":["browserbase/sdk-functions-node"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/browserbase/sdk-functions-node","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/browserbase%2Fsdk-functions-node","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/browserbase%2Fsdk-functions-node/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/browserbase%2Fsdk-functions-node/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/browserbase%2Fsdk-functions-node/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/browserbase","download_url":"https://codeload.github.com/browserbase/sdk-functions-node/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/browserbase%2Fsdk-functions-node/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31292637,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2026-04-01T22:11:36.412Z","updated_at":"2026-04-01T22:11:36.954Z","avatar_url":"https://github.com/browserbase.png","language":"TypeScript","readme":"# Browserbase Functions Node SDK\n\n[![NPM version](https://img.shields.io/npm/v/@browserbasehq/sdk-functions.svg)](https://npmjs.org/package/@browserbasehq/sdk-functions)\n\nThe Browserbase Functions SDK lets you define, develop, and deploy serverless browser automation functions on [Browserbase](https://browserbase.com). Each function gets a managed browser session — write your automation logic, test it locally, and publish it to the cloud.\n\nThe full documentation can be found on [docs.browserbase.com](https://docs.browserbase.com/functions/quickstart).\n\n## Installation\n\n```sh\npnpm add @browserbasehq/sdk-functions\n```\n\nor with npm:\n\n```sh\nnpm install @browserbasehq/sdk-functions\n```\n\n## Quick Start\n\nScaffold a new project with the CLI:\n\n```sh\npnpm dlx @browserbasehq/sdk-functions init my-project\ncd my-project\n```\n\nAdd your Browserbase credentials to `.env`:\n\n```sh\nBROWSERBASE_API_KEY=your_api_key_here\nBROWSERBASE_PROJECT_ID=your_project_id_here\n```\n\nStart the local development server:\n\n```sh\npnpm bb dev index.ts\n```\n\nWhen ready, publish to Browserbase:\n\n```sh\npnpm bb publish index.ts\n```\n\n## Usage\n\n### Basic Function\n\n```ts\nimport { defineFn } from \"@browserbasehq/sdk-functions\";\n\ndefineFn(\"hello-world\", async () =\u003e {\n  return { message: \"Hello from Browserbase!\" };\n});\n```\n\n### Browser Automation\n\nEvery function receives a `context` with a managed browser session. Connect to it with Playwright:\n\n```ts\nimport { defineFn } from \"@browserbasehq/sdk-functions\";\nimport { chromium } from \"playwright-core\";\n\ndefineFn(\"scrape-titles\", async (context) =\u003e {\n  const browser = await chromium.connectOverCDP(context.session.connectUrl);\n  const page = browser.contexts()[0]!.pages()[0]!;\n\n  await page.goto(\"https://news.ycombinator.com\");\n  const titles = await page.$$eval(\".titleline \u003e a\", (els) =\u003e\n    els.slice(0, 5).map((el) =\u003e el.textContent),\n  );\n\n  return { titles };\n});\n```\n\n### Parameter Validation\n\nUse [Zod](https://zod.dev) schemas to validate parameters passed to your function:\n\n```ts\nimport { defineFn } from \"@browserbasehq/sdk-functions\";\nimport z from \"zod\";\n\ndefineFn(\n  \"multiply\",\n  async (_context, params) =\u003e {\n    return { result: params.a * params.b };\n  },\n  {\n    parametersSchema: z.object({\n      a: z.number(),\n      b: z.number(),\n    }),\n  },\n);\n```\n\n### Custom Browser Configuration\n\nPass `sessionConfig` to customize the browser session (uses the same options as the [Browserbase SDK session create params](https://docs.browserbase.com/reference/api/create-a-session)):\n\n```ts\nimport { defineFn } from \"@browserbasehq/sdk-functions\";\nimport { chromium } from \"playwright-core\";\n\ndefineFn(\n  \"stealth-scraper\",\n  async (context) =\u003e {\n    const browser = await chromium.connectOverCDP(context.session.connectUrl);\n    const page = browser.contexts()[0]!.pages()[0]!;\n\n    await page.goto(\"https://example.com\");\n    return { content: await page.textContent(\"body\") };\n  },\n  {\n    sessionConfig: {\n      browserSettings: { advancedStealth: true },\n    },\n  },\n);\n```\n\n## CLI Reference\n\nThe `bb` CLI is included with the package.\n\n| Command                   | Description                                                    |\n| ------------------------- | -------------------------------------------------------------- |\n| `bb init [project-name]`  | Scaffold a new project (defaults to `my-browserbase-function`) |\n| `bb dev \u003centrypoint\u003e`     | Start a local development server                               |\n| `bb publish \u003centrypoint\u003e` | Deploy your function to Browserbase                            |\n| `bb invoke \u003cfunctionId\u003e`  | Invoke a deployed function                                     |\n\n### `bb init`\n\n```sh\nbb init my-project\nbb init my-project --package-manager npm\n```\n\nOptions:\n\n- `-p, --package-manager \u003cmanager\u003e` — Package manager to use (`npm` or `pnpm`, defaults to `pnpm`)\n\n### `bb dev`\n\n```sh\nbb dev index.ts\nbb dev index.ts --port 3000\n```\n\nOptions:\n\n- `-p, --port \u003cnumber\u003e` — Port to listen on (default: `14113`)\n- `-h, --host \u003cstring\u003e` — Host to bind to (default: `127.0.0.1`)\n\n### `bb publish`\n\n```sh\nbb publish index.ts\nbb publish index.ts --dry-run\n```\n\nOptions:\n\n- `--dry-run` — Show what would be published without uploading\n- `-u, --api-url \u003curl\u003e` — Custom API endpoint URL\n\n### `bb invoke`\n\n```sh\nbb invoke \u003cfunctionId\u003e\nbb invoke \u003cfunctionId\u003e --params '{\"key\": \"value\"}'\n```\n\nOptions:\n\n- `-p, --params \u003cjson\u003e` — JSON parameters to pass to the function\n- `--no-wait` — Don't wait for the invocation to complete\n- `--check-status \u003cinvocationId\u003e` — Check the status of an existing invocation\n- `-u, --api-url \u003curl\u003e` — Custom API endpoint URL\n\n## Configuration\n\nSet your Browserbase credentials as environment variables or in a `.env` file:\n\n| Variable                 | Required | Description                 |\n| ------------------------ | -------- | --------------------------- |\n| `BROWSERBASE_API_KEY`    | Yes      | Your Browserbase API key    |\n| `BROWSERBASE_PROJECT_ID` | Yes      | Your Browserbase project ID |\n\nGet your API key and project ID from [browserbase.com](https://browserbase.com).\n\n## Requirements\n\n- Node.js 18+\n- TypeScript \u003e= 4.5\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrowserbase%2Fsdk-functions-node","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrowserbase%2Fsdk-functions-node","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrowserbase%2Fsdk-functions-node/lists"}