Zapier Plasmate Integration
April 12, 2026 ยท View on GitHub
Connect Plasmate to 7,000+ apps with Zapier. Plasmate is the browser engine for AI agents - it converts HTML to structured JSON (SOM) with 10-100x token compression.
Features
- Fetch Page - Convert any webpage to structured JSON, text, or markdown
- Extract Text - Get clean, readable text from any URL
- Extract Links - Pull all links from a page with filtering options
- Batch Fetch - Process up to 20 URLs in a single action
- Page Changed Trigger - Monitor webpages for content changes
Installation
Prerequisites
- Node.js 18+
- Zapier CLI
- A Zapier developer account
Setup
# Clone the repository
git clone https://github.com/nicholasrubright/zapier-plasmate.git
cd zapier-plasmate
# Install dependencies
npm install
# Login to Zapier CLI
zapier login
# Validate the integration
zapier validate
# Run tests
npm test
Development
Local Testing
# Run all tests
npm test
# Validate Zapier integration
zapier validate
# Test a specific action
zapier invoke create fetchPage --inputData '{"url": "https://example.com"}'
Environment Variables
For testing with Plasmate Cloud:
export PLASMATE_API_KEY="your-api-key"
export PLASMATE_BASE_URL="https://api.plasmate.app"
For local Plasmate:
export PLASMATE_BASE_URL="http://localhost:3000"
Publishing
Initial Publish
# Register the app with Zapier
zapier register "Plasmate"
# Push to Zapier
zapier push
# Promote to public (after Zapier review)
zapier promote 1.0.0
Updates
# Bump version in package.json, then:
zapier push
# Promote the new version
zapier promote 1.0.1
Actions
Fetch Page
Fetches a webpage and converts it to structured JSON (SOM) with massive token compression.
Inputs:
| Field | Type | Required | Description |
|---|---|---|---|
| URL | string | Yes | The webpage URL to fetch |
| Format | choice | No | som (default), text, or markdown |
| CSS Selector | string | No | Extract specific content (e.g., article, .main) |
| Timeout | integer | No | Max wait time in ms (default: 30000) |
| Include Metadata | boolean | No | Include title, description, etc. |
| Include Links | boolean | No | Include all page links |
Outputs:
content- The processed contenttokenSavings- Compression percentage (e.g., "85%")title,description- Page metadatalinks,linkCount- Extracted links (if enabled)
Extract Text
Extracts clean, readable text from a webpage.
Inputs:
| Field | Type | Required | Description |
|---|---|---|---|
| URL | string | Yes | The webpage URL |
| CSS Selector | string | No | Extract from specific element |
| Max Length | integer | No | Truncate to N characters |
| Preserve Line Breaks | boolean | No | Keep original formatting |
Outputs:
text- Extracted text contentwordCount,charCount- Text statisticstruncated- Whether content was cut off
Extract Links
Extracts and filters all links from a webpage.
Inputs:
| Field | Type | Required | Description |
|---|---|---|---|
| URL | string | Yes | The webpage URL |
| CSS Selector | string | No | Extract links from specific area |
| Filter Pattern | string | No | Regex to filter links |
| Include Internal | boolean | No | Include same-domain links |
| Include External | boolean | No | Include other-domain links |
| Maximum Links | integer | No | Limit returned links |
Outputs:
links- JSON array of link objectstotalCount,internalCount,externalCount- Link countslink1throughlink5- First 5 links for easy access
Batch Fetch
Fetches multiple URLs in a single action.
Inputs:
| Field | Type | Required | Description |
|---|---|---|---|
| URLs | text | Yes | URLs (newline or comma-separated) |
| Format | choice | No | Output format for all pages |
| CSS Selector | string | No | Applied to all pages |
| Timeout | integer | No | Timeout per page |
| Max Concurrent | integer | No | Parallel requests (1-10) |
Outputs:
results- JSON array of fetched contentsuccessCount,errorCount- Result countsresult1_url,result1_content, etc. - First results
Triggers
Page Changed
Triggers when webpage content changes. Uses content hashing for reliable change detection.
Inputs:
| Field | Type | Required | Description |
|---|---|---|---|
| URL to Monitor | string | Yes | The webpage to watch |
| CSS Selector | string | No | Monitor specific content |
| Ignore Whitespace | boolean | No | Skip formatting-only changes |
Outputs:
content- Current page contentcontentHash- MD5 hash for comparisoncheckedAt- Timestamp of check
Example Zaps
1. Save Articles to Notion
Trigger: RSS feed new item Action: Fetch Page (format: markdown) Action: Create Notion page with content
2. Monitor Competitor Pricing
Trigger: Page Changed (selector: ".price") Action: Send Slack notification Action: Log to Google Sheets
3. Build a Knowledge Base
Trigger: New Airtable record with URL Action: Fetch Page (format: som) Action: Update Airtable record with content
4. Content Aggregator
Trigger: Schedule (daily) Action: Batch Fetch (list of news sites) Action: Send digest email via Gmail
5. Broken Link Checker
Trigger: Schedule (weekly) Action: Extract Links from your site Action: For each link, Fetch Page Filter: Where fetch failed Action: Create issue in GitHub
Authentication
The integration supports two modes:
- Plasmate Cloud - Enter your API key for hosted service
- Local Plasmate - Leave API key blank, set base URL to your local instance
Rate Limits
- Plasmate Cloud: 100 requests/minute (default tier)
- Batch actions count as one request regardless of URL count
- Page Changed trigger polls every 5 minutes by default
Support
License
MIT