BytewellsDocs

Preview documentation. Bytewells is in private beta. These pages are incomplete and will change often. Do not use them for production integrations.

Quick start tutorial

Sign up, push an Actor, and run it on Bytewells.

Get from zero to a running Actor on the hosted Bytewells platform. You do not need to install or run the Bytewells stack yourself.

Prerequisites

  • A Bytewells account
  • Node.js 20 or later (to develop and push an Actor)
  • Optional: the CLI (npm install -g @bytewells/cli)

Step 1: Create an account and API key

  1. Open bytewells.com/dashboard and sign up.
  2. Go to Settings → API Keys and create a key (shown once; it starts with cp_).
export BYTEWELLS_TOKEN=cp_...
export APIFY_TOKEN=$BYTEWELLS_TOKEN
export APIFY_API_BASE_URL=https://bytewells.com/api/v2

Or with the CLI:

npm install -g @bytewells/cli
bw login --url https://bytewells.com/api
# paste your API key when prompted

Step 2: Create an Actor project

mkdir my-scraper && cd my-scraper

package.json:

{
  "name": "my-scraper",
  "version": "1.0.0",
  "type": "module",
  "dependencies": {
    "apify": "^3.1.0",
    "crawlee": "^3.5.0"
  }
}

src/main.js:

import { Actor } from 'apify';
import { CheerioCrawler } from 'crawlee';

await Actor.init();

const crawler = new CheerioCrawler({
  maxRequestsPerCrawl: 5,
  async requestHandler({ request, $ }) {
    const title = $('title').text().trim();
    console.log(`Scraped: ${request.url} → ${title}`);
    await Actor.pushData({ url: request.url, title });
  },
});

await crawler.run(['https://crawlee.dev']);
await Actor.exit();

Dockerfile:

FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
CMD ["node", "src/main.js"]

.actor/actor.json:

{
  "actorSpecification": 1,
  "name": "my-scraper",
  "version": "1.0.0"
}

Optionally add .actor/input_schema.json and a README.md — the console builds an input form from the schema, and the Store shows the README.

The actor.json must live under .actor/ (not the project root). Actor names must match ^[a-z0-9][a-z0-9-]{0,62}$.

The Apify SDK talks to whatever APIFY_API_BASE_URL points at. On Bytewells runs, the platform sets that for you — the same Actor code works on Apify and Bytewells.

Step 3: Push and build

bw push

This uploads the source; Bytewells builds the image. You do not need Docker on your laptop for the cloud build.

Step 4: Run it

bw call my-scraper --wait
bw logs <run-id> --follow

Or from the console: open the Actor → Run. Or via the API:

curl -X POST https://bytewells.com/api/v2/acts/my-scraper/runs \
  -H "Authorization: Bearer $BYTEWELLS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'

When the run succeeds, fetch results:

curl "https://bytewells.com/api/v2/datasets/<datasetId>/items" \
  -H "Authorization: Bearer $BYTEWELLS_TOKEN"

Runs debit prepaid compute credits. Top up under Billing if needed. Store Actors you do not own also need a rental or pass — see Billing and Passes.

Step 5: Publish to the Store (optional)

bw publish my-scraper --price 29 --trial-days 7   # or --free

Or use Publish in the console: set price, trial, optional Flash/Burst/Sprint passes, then complete Stripe Connect for paid listings. Details: Publishing.

What's next

Questions? [email protected].

On this page