Citation Builder
Pricing
Pay per event
Citation Builder
Build local SEO citations by automatically submitting your business NAP (Name, Address, Phone) to 45+ directories. Why Citations Matter Local citations are mentions of your business name, address, and phone number on other websites. They're a critical local SEO ranking factor:
Pricing
Pay per event
Rating
0.0
(0)
Developer
The Howlers
Maintained by CommunityActor stats
8
Bookmarked
55
Total users
2
Monthly active users
9 days ago
Last modified
Categories
Share
Citation Builder v2.1 — Audit, Submit & Sync 45+ Directories
Audit citations across 45+ directories with AI-powered extraction (Firecrawl fallback), cross-validation engine (weighted canonical NAP detection), Claude AI health scoring + correction suggestions, industry-specific niche directories (16+ across 6 industries).
BYOK (Bring Your Own Key): you provide your own API credentials.
Before You Start
This actor requires your own API credentials to fetch real data.
Where to get your key: For Data Axle aggregator submission (full mode only). Uses /v3/places/claims endpoint to create/claim listings that feed YP, SuperPages, DexKnows + 100+ downstream directories.
Quick Start
Run with real data
{"mode": "audit","businessName": "John's Plumbing & HVAC","streetAddress": "123 Main Street","city": "Dallas","state": "TX","zipCode": "75001","phone": "(214) 555-1234","categories": ["Plumber","HVAC Contractor"],"facebookUrl": "https://example.com","linkedinUrl": "https://example.com","twitterUrl": "https://example.com","instagramUrl": "https://example.com","verifyAfterSubmit": false,"dryRun": false,"maxConcurrent": 3,"dataAxleApiKey": "YOUR_API_KEY_HERE","yextApiKey": "YOUR_API_KEY_HERE","brightLocalApiKey": "YOUR_API_KEY_HERE","anthropicApiKey": "YOUR_API_KEY_HERE","firecrawlApiKey": "YOUR_API_KEY_HERE","captchaSolverApiKey": "YOUR_API_KEY_HERE","enableAiAnalysis": true,"enableCrossValidation": true,"proxy": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Input Parameters
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
mode | string | "audit" | No | audit = check 45+ directories for existing citations and NAP consistency. submit = audit + auto-fill free directories + copy-paste data for login-required ones. full = audit + submit + push to Data Axle/Yext/BrightLocal APIs. |
businessName | string | - | No | Your official business name (must match exactly across all citations) |
streetAddress | string | - | No | Your business street address |
city | string | - | No | City name |
state | string | - | No | 2-letter state code |
zipCode | string | - | No | 5-digit ZIP code |
phone | string | - | No | Primary business phone (will be formatted consistently) |
website | string | - | No | Your business website (optional but recommended) |
email | string | - | No | Contact email address (optional) |
description | string | - | No | Brief description of your business (150-300 characters recommended) |
categories | array | - | No | Business categories, used for Yext taxonomy mapping and industry directory detection (e.g., 'Plumber', 'HVAC Contractor', 'Dentist', 'Attorney') |
industry | string | - | No | Your industry, which unlocks niche directories. Examples: 'home services' adds HomeAdvisor/Porch/Thumbtack/Houzz; 'legal' adds Avvo/FindLaw/Justia; 'healthcare' adds Healthgrades/Zocdoc/Vitals; 'real estate' adds Zillow/Realtor.com; 'restaurant' adds OpenTable/Zomato; 'auto' adds CarGurus/RepairPal. |
facebookUrl | string | - | No | Your Facebook business page URL |
linkedinUrl | string | - | No | Your LinkedIn company page URL |
twitterUrl | string | - | No | Your Twitter/X profile URL |
instagramUrl | string | - | No | Your Instagram profile URL |
verifyAfterSubmit | boolean | false | No | After submitting to directories, re-audit them to confirm the listing went live. Most directories take 24-72h to index, so immediate verification may show 'not yet live'. |
dryRun | boolean | false | No | Legacy compatibility: setting this to true maps to mode='audit'. Use the 'mode' field instead. |
directories | array | - | No | Only audit/submit these directories (leave empty for all 45+) |
skipDirectories | array | - | No | Skip these directories (e.g., 'BBB' if you're not a member) |
maxConcurrent | integer | 3 | No | Number of directories to process simultaneously |
dataAxleApiKey | string | - | Yes* | For Data Axle aggregator submission (full mode only). Uses /v3/places/claims endpoint to create/claim listings that feed YP, SuperPages, DexKnows + 100+ downstream directories. |
yextApiKey | string | - | Yes* | For Yext Knowledge API entity creation (full mode only). Your categories are auto-mapped to Yext taxonomy IDs. Syncs to 200+ directories via PowerListings. |
brightLocalApiKey | string | - | Yes* | For BrightLocal Citation Builder campaign (full mode only). Creates a managed campaign; BrightLocal's team handles submissions within 5-7 business days. |
anthropicApiKey | string | - | Yes* | Powers AI analysis: health scoring, correction suggestions, prioritized actions, estimated ranking impact. Uses Claude Sonnet for intelligent citation recommendations. |
firecrawlApiKey | string | - | Yes* | AI-powered extraction fallback. When CSS selectors fail (common on React SPAs like Healthgrades, Zocdoc, etc.), Firecrawl's AI extracts NAP data directly from page content. |
captchaSolverProvider | string | - | No | Which CAPTCHA solving service to use. All three support reCAPTCHA v2/v3, hCaptcha, and Turnstile. CapSolver also supports image CAPTCHAs. Requires captchaSolverApiKey. |
captchaSolverApiKey | string | - | Yes* | API key for your chosen CAPTCHA solver (CapSolver, 2Captcha, or Anti-Captcha). Without this, CAPTCHAs are screenshotted for manual completion. |
enableAiAnalysis | boolean | true | No | Run Claude AI analysis on results for health scoring, correction suggestions, and impact estimates. Requires anthropicApiKey. |
enableCrossValidation | boolean | true | No | Use weighted voting across directories to determine your canonical (most likely correct) NAP. Detects name/address/phone variations. |
googlePlaceId | string | - | No | Your GBP Place ID. If provided, GBP is treated as source of truth (always correct) and all other citations are compared against it. |
businesses | array | - | No | Array of businesses to audit in sequence. Each object needs: businessName, streetAddress, city, state, zipCode, phone. Optional: website, email, categories, industry. |
webhookUrl | string | - | No | Optional URL to receive results via POST request when actor completes |
proxy | object | - | No | Proxy settings for web requests |
Pricing
This actor uses pay-per-event billing:
| Event | Description | Price |
|---|---|---|
| Citation Audited | NAP checked on one directory (search + extract + compare) | $0.05 |
| Citation Submitted | Form auto-filled and submitted to a free directory | $0.25 |
| Aggregator API Push | Business data pushed to Data Axle, Yext, or BrightLocal API | $0.50 |
Troubleshooting
"API key is required"
- Add your API key in the input
"API error 403" or "Unauthorized"
Your API key is invalid, expired, or doesn't have access to this specific API endpoint. Double-check your key and account permissions.
"API error 429" or "Rate limit"
Too many requests. Wait a minute and try again, or reduce the number of items per run.
No results or empty dataset
Check the run log for error messages. Common causes:
- Invalid input format (check the examples above)
- API key without proper permissions
- The target data doesn't exist or is too small to track
How do I test without an API key?
Run the actor without any API keys, or set "demoMode": true. It returns realistic sample audit results labeled with demo: true and a _notice field so you can inspect the exact output shape before connecting your own keys. Demo runs make no external API calls and charge no task events. To run a live audit, provide at least one API key (anthropicApiKey, dataAxleApiKey, yextApiKey, or brightLocalApiKey).
Built by John Rippy | Actor Arsenal