apify-sdk-patterns
'Production-ready patterns for Apify SDK and apify-client in TypeScript.
Install / Use
npx skills add jeremylongshore/tons-of-skills-marketplace --skill apify-sdk-patternsInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
AutomationSupported Platforms
Our assessment of apify-sdk-patterns
apify-sdk-patterns scores 85/100 on our quality scale, 1520th of 2,607 Automation skills we index.
Its SKILL.md is 5.6 KB long, well organised into 12 sections with 2 code examples: a solid amount of guidance for an agent.
With 2,785 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated 6 days ago, so apify-sdk-patterns is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
apify-sdk-patterns compared with similar skills
All 4 of these similar skills score higher than apify-sdk-patterns; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| apify-sdk-patterns (this skill)by jeremylongshore | 85 | 2.8k | 6d ago | SKILL.md |
| Agent-Reachby Panniantong | 100 | 86.3k | 14d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 74.1k | today | CLAUDE.md |
| rufloby ruvnet | 100 | 73.6k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 84.6k | today | MCP Server |
Frequently asked questions
- How do I install apify-sdk-patterns?
- Run
npx skills add jeremylongshore/tons-of-skills-marketplace --skill apify-sdk-patterns. The install tabs above show the steps for each supported agent. - Which AI agents does apify-sdk-patterns work with?
- It is written for Claude Code, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is apify-sdk-patterns safe to use?
- It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is apify-sdk-patterns still maintained?
- The repository was last updated 6 days ago, so apify-sdk-patterns is actively maintained.
Skill content
View source on GitHubname: apify-sdk-patterns description: 'Production-ready patterns for Apify SDK and apify-client in TypeScript.
Use when building Actors with Crawlee, managing datasets/KV stores, or implementing robust client wrappers with retry and validation.
Trigger with "apify SDK patterns", "apify best practices", "apify client wrapper", "crawlee patterns", "idiomatic apify".
' allowed-tools: Read, Write, Edit version: 1.5.0 license: MIT author: Jeremy Longshore jeremy@intentsolutions.io tags:
- saas
- scraping
- automation
- apify compatibility: Designed for Claude Code
Apify SDK Patterns
Overview
Production patterns for both the apify SDK (building Actors) and apify-client (calling Actors remotely). Covers Crawlee crawler selection, data storage, proxy configuration, and typed client wrappers. This skill gives you the essential skeletons inline; the full eight-pattern catalog and two worked scenarios live in references/ for progressive drill-down.
Prerequisites
- Install what you need:
apify-clientfor calling Actors remotely, orapify+crawleefor building Actors. Both can coexist in one project. - Set
APIFY_TOKENin the environment — read it viaprocess.env.APIFY_TOKEN, never hard-code it. This is the only credential these patterns require (Apify uses a personal API token, not OAuth). - TypeScript is recommended; every snippet here is typed and runs under
ts-nodeor a compiled build.
Instructions
Use the two skeletons below to start, then reach into the reference catalog for the pattern that matches your task.
Pattern 1: Typed Client Singleton
Create one lazily-initialized, token-validated ApifyClient and reuse it everywhere. A resetClient() hook keeps it testable.
// src/apify/client.ts
import { ApifyClient } from 'apify-client';
let instance: ApifyClient | null = null;
export function getApifyClient(): ApifyClient {
if (!instance) {
const token = process.env.APIFY_TOKEN;
if (!token) throw new Error('APIFY_TOKEN is required');
instance = new ApifyClient({ token });
}
return instance;
}
// Reset for testing
export function resetClient(): void {
instance = null;
}
Pattern 2: Crawlee Crawler Selection
Choose the crawler that matches the page, not the other way around:
import { CheerioCrawler, PlaywrightCrawler, PuppeteerCrawler } from 'crawlee';
// CHEERIO — Fast, lightweight, no JavaScript rendering
// Use for: static HTML, server-rendered pages, APIs
// PLAYWRIGHT — Full browser, all engines, modern API
// Use for: SPAs, JavaScript-heavy pages, complex interactions
// PUPPETEER — Chromium-only browser automation
// Use for: when you need Chromium specifically or legacy Puppeteer code
Patterns 3–8: Full catalog
The remaining six patterns are moved verbatim into patterns.md so this file stays scannable. Pick the one you need:
- Pattern 3 — Actor lifecycle with error handling:
Actor.main()wrapping input validation, conditional proxy, and afailedRequestHandler. - Pattern 4 — Dataset operations: push from inside an Actor; list/create/download from an external app.
- Pattern 5 — Key-value store operations: JSON config and binary artifacts by content type.
- Pattern 6 — Proxy configuration: datacenter vs residential vs SERP tiers.
- Pattern 7 — Router for multi-page Actors: labeled listing/detail handlers.
- Pattern 8 — Safe result wrapper: discriminated-union
Result<T>around remote calls.
See patterns.md for the complete code of all six.
Output
Applying these patterns yields:
- A single reusable
ApifyClientinstance with fail-fast token validation. - Actors that store structured records in the default dataset (downloadable as CSV/JSON) and named config/artifacts in key-value stores.
- Remote Actor calls that resolve to a typed
Result<T>— callers branch onerrorinstead of catching exceptions. - Failed requests captured as
{ url, error, '#isFailed': true }rows rather than aborting the crawl.
Error Handling
| Pattern | Use Case | Benefit |
|---------|----------|---------|
| Actor.main() | Actor entry point | Auto init/exit + error reporting |
| failedRequestHandler | Per-request failures | Log failures without stopping crawl |
| Safe wrapper | External calls | Prevents uncaught exceptions |
| Router | Multi-page scrapes | Clean separation of page types |
| Proxy rotation | Anti-bot sites | Higher success rate |
Examples
Two runnable end-to-end scenarios live in examples.md:
- Example A — Call a remote Actor safely from an app: composes the client singleton (Pattern 1) with the safe result wrapper (Pattern 8) to run
apify/web-scraperand read its dataset without ever throwing. - Example B — A two-tier product scraper Actor: composes crawler selection (Pattern 2), the router (Pattern 7), and dataset writes (Pattern 4) into a listing → detail → structured-record flow.
Resources
- Full pattern catalog — Patterns 3–8 with complete code
- Worked examples — two end-to-end scenarios
- Apify SDK Reference
- Crawlee Documentation
- Apify JS Client Reference
- Proxy Management Guide
Next Steps
Apply these patterns in apify-core-workflow-a for a complete build-and-deploy web scraping workflow, or pair them with apify-common-errors when hardening an Actor for production.
Related Skills
Agent-Reach
86.3kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
74.1kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ruflo
73.6k🌊 The original agent harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, federation, vector RAG integration, and native Claude Code / Codex / Hermes and many more Integrated
Scrapling
84.6k🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
