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
- Open bytewells.com/dashboard and sign up.
- 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/v2Or with the CLI:
npm install -g @bytewells/cli
bw login --url https://bytewells.com/api
# paste your API key when promptedStep 2: Create an Actor project
mkdir my-scraper && cd my-scraperpackage.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 pushThis 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> --followOr 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 --freeOr 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
- Import from Apify — console OAuth or
bw import apify - CLI — push, publish, rent, import from Apify
- API reference — runs, storage, marketplace
- Billing — credits, rentals, passes
- Apify compatibility — point existing clients at Bytewells
Questions? [email protected].