> ## Agent Instructions > > Base URL: https://api.anysite.io > Authentication: send the `access-token` header. Do NOT use `Authorization: Bearer`. > Full endpoint catalog: https://app.anysite.io/docs # AI Development Assistant # AI Development Assistant Streamline your API development workflow with our intelligent prompt generation system that creates comprehensive integration instructions for AI development tools. ## How It Works When browsing API endpoints in our documentation, you'll find a **"AI Prompt"** button next to each endpoint title that automatically generates detailed, ready-to-use prompts for AI development tools like Claude, ChatGPT, and Perplexity. ### Smart Button Integration Our AI Development Assistant adds intelligent prompt generation buttons to every API Reference page: 1. **Navigate** to any API Reference endpoint page 2. **Look for** the "🤖 AI Prompt" button next to the endpoint title 3. **Click** the button to automatically generate and copy a comprehensive integration prompt 4. **Paste** the prompt into your preferred AI development tool: - 💬 ChatGPT - 🤖 Claude - 🔍 Perplexity ## Generated Prompt Features Each AI-generated prompt includes: ### 🎯 **Endpoint Details** - HTTP method and complete URL - Endpoint description and functionality - Authentication requirements ### 🔐 **Authentication Guide** - Correct header format (`access-token`, not Bearer tokens) - Proper request structure - Security best practices ### 💻 **Code Examples** - cURL commands with proper syntax - Request and response examples - Error handling patterns ### 🏗️ **Implementation Requirements** - Production-ready code guidelines - Error handling for all HTTP status codes (200, 400, 401, 403, 429, 500) - Rate limiting implementation - Response validation and parsing - TypeScript type definitions - Comprehensive documentation ### 🚀 **Development Best Practices** - Framework-agnostic implementation guidance - Security considerations - Performance optimization tips - Testing strategies ## Supported Frameworks & Languages The generated prompts are designed to work with any programming language or framework. Common implementations include: - **JavaScript/TypeScript**: fetch, axios, Node.js - **Python**: requests, httpx, aiohttp - **PHP**: cURL, Guzzle - **Java**: HttpClient, OkHttp - **C#**: HttpClient, RestSharp - **Go**: net/http, resty - **Ruby**: Net::HTTP, Faraday ## API Authentication All generated prompts include proper authentication instructions for the Anysite API: ```bash # Correct authentication format curl -X POST "https://api.anysite.io/api/endpoint" \ -H "access-token: YOUR_API_KEY" \ -H "Content-Type: application/json" ``` > The Anysite API uses `access-token` headers, **not** Bearer token format. Generated prompts always include the correct authentication method. ## Getting Started 1. Navigate to any **API Reference** page 2. Find the "🤖 AI Prompt" button next to the endpoint title 3. Click the button to copy the generated prompt 4. Paste the prompt into your preferred AI development tool 5. Get production-ready implementation code ### Example Generated Prompt Here's what a typical generated prompt looks like: ```markdown # Anysite API Integration Task I need to integrate the **/linkedin/email/user** endpoint from the Anysite API into my application. ## Endpoint Details - **Method**: POST - **URL**: https://api.anysite.io/api/linkedin/email/user - **Description**: Find LinkedIn users by email address ## Authentication Requirements The Anysite API uses access token authentication (NOT Bearer tokens): Headers: access-token: YOUR_API_KEY Content-Type: application/json ## Request Example curl --request POST \ --url https://api.anysite.io/api/linkedin/email/user \ --header 'Content-Type: application/json' \ --header 'access-token: ' \ --data '{ "timeout": 300, "email": "example@gmail.com", "count": 5 }' ## Expected Response The API returns a JSON response with comprehensive user profile data including: - User identification and profile URLs - Contact information (emails, phone numbers) - Professional details (headline, skills, connections) - Personal information (birth date, location, pronouns) - Verification status and follower counts ## Implementation Requirements Please provide a complete, production-ready implementation that handles authentication, request formatting, error handling, rate limiting, and response parsing. ``` ## Advanced Features ### Intelligent Context Detection The system automatically detects: - **HTTP methods** from DOM content - **Request/response examples** from code blocks - **Parameter requirements** from documentation - **Response schemas** from API specifications ### Multi-Language Support Generated prompts include guidance for: - Type-safe implementations - Language-specific best practices - Framework-specific patterns - Error handling conventions ## Troubleshooting If the "AI Prompt" buttons don't appear: 1. **Refresh the page** - The feature loads dynamically after Mintlify renders the API content 2. **Check browser compatibility** - Modern browsers with JavaScript enabled required 3. **Disable ad blockers** - May interfere with dynamic script loading 4. **Wait for page load** - Buttons appear after the API documentation fully loads 5. **Check API Reference pages** - Feature only works on dynamically generated API endpoint pages --- # Authentication ## Overview Anysite uses API key authentication to secure access to all endpoints. You'll need to include your API key in the request headers for all API calls. ## Getting Your API Key #### Create Account Visit [anysite.io](https://app.anysite.io/register) and create your account #### Generate API Key Navigate to your account settings and generate a new API key #### Secure Storage Store your API key securely and never expose it in client-side code ## Authentication Methods ### Access Token Header (Required) Include your API key in the `access-token` header: ```bash curl -X GET "https://api.anysite.io/token/statistic" \ -H "access-token: YOUR_API_KEY" ``` > The Anysite API does **not** use Bearer token authentication. Always use the `access-token` header. ## Rate Limits API requests are subject to rate limiting to ensure fair usage: > Rate limits vary by endpoint and subscription plan. Check your dashboard for current limits. ## Error Responses When authentication fails, you'll receive one of these responses: Invalid or missing API key API key doesn't have permission for this resource Rate limit exceeded ## Best Practices > - Store API keys as environment variables - Use different API keys for different environments - Rotate API keys regularly - Monitor API usage in your dashboard - Never commit API keys to version control ## Testing Authentication Test your authentication setup with this simple request: ```bash cURL curl -X GET "https://api.anysite.io/token/statistic" \ -H "access-token: YOUR_API_KEY" ``` ```python Python import requests headers = { 'access-token': 'YOUR_API_KEY' } response = requests.get( 'https://api.anysite.io/token/statistic', headers=headers ) print(response.json()) ``` ```javascript JavaScript const response = await fetch('https://api.anysite.io/token/statistic', { headers: { 'access-token': 'YOUR_API_KEY' } }); const data = await response.json(); console.log(data); ``` --- # B2B Outbound Operator — ICP Discovery & Scoring at $1 per 1k Records ## Overview A founder-led B2B SaaS operator (under 10 employees, founded 2024) runs a boutique outbound program — high-quality, manually reviewed touches, ~150 per week — against a custom ICP framework. Instead of buying a sales-tech stack across firmographics, list-building, enrichment, and delivery, the team built a single pipeline on `db/linkedin/search/companies` plus four supporting endpoints. The database-backed search replaces a multi-vendor stack with one structured payload and a mini-DSL for keyword matching. Output is raw rows the team scores on their side — no inherited vendor schema, no per-record fees on data discovery. #### 14,000 companies Discovered in a single sprint from one query (~2s wall-clock) #### 180 ready-to-send leads Hook + verified email + no role drift, per week #### ~$15–20 / sprint Out-of-pocket LLM cost; discovery API calls free under MCP Unlimited ## The Challenge Boutique B2B outbound demands a tight ICP: not "B2B tech" but a specific cross-section of company type, size, geography, funding stage, and product positioning. Off-the-shelf sales-tech stacks force a coarse ICP — industry codes, employee ranges, hard categories. To narrow further, teams stitch four to six vendors with overlapping pricing and partial coverage, then export and re-classify on their own side anyway. The team needed: - **Bulk discovery in one call** — pull 1,000–10,000 candidates per sprint, not 50-result pagination loops - **Soft-signal search** — match phrases across `description`, `short_description`, `specialities`, `hashtags`, and `locations` simultaneously - **Strict structured filters** — country (ISO2), employee range, founded year, active-status flags — applied at the database layer, not client-side - **Sub-second iteration** — try ten different keyword sets in an hour, not three over a week - **Schema ownership** — every row returned in full LinkedIn shape so the team writes its own scoring rubric ## The Solution The `/db/linkedin/search/companies` endpoint exposes the database directly via a structured payload. Keywords get a mini-DSL (whitespace = AND, `|` = OR, `"phrase"` = exact phrase, `-token` = NOT). Filters are typed: `employee_count_min/max`, `founded_on_min/max`, `country_hq`, `country_any`, `is_active`, `has_description`, `min_description_length`, and more. ### 1. Cross-field keyword search via mini-DSL — 70% of calls A single `keywords` field searches across `name`, `description`, `short_description`, `specialities`, `hashtags`, and `locations` simultaneously. For 27 ICP categories ranging from autonomous outbound agents to compliance research tools, the team builds one DSL string per sprint: ```json { "keywords": "\"AI SDR\"|\"AI BDR\"|\"autonomous outbound\"|\"AI sales agent\"|\"AI research agent\"|\"AI signal\"|\"AI inbound qualification\"|\"AI prospecting\"", "country_hq": ["US","GB","DE","NL","FR","CA","AU","IE","SG"], "employee_count_min": 11, "employee_count_max": 200, "is_active": true, "has_description": true, "min_description_length": 100, "count": 1000 } ``` This single call returns 1,000 ICP-candidate companies with full LinkedIn fields in ~2 seconds wall-clock. ### 2. Token-aware structured geo + size filters — 20% of calls A common pitfall in coarse country filters is substring matching: the `US` token used to false-match against `Austria`, `Australia`, `Austin`, `Houston`. The `country_hq` and `country_any` params parse the ISO2 code directly out of `headquarter_location` and the `locations[]` array, eliminating that class of false positive. ```json { "industry_name": "fintech|payments", "country_hq": ["US","GB","DE"], "employee_count_min": 51, "founded_on_min": 2020, "page_verification_status": true, "count": 500 } ``` ### 3. Per-field DSL for surgical narrowing — 10% of calls When the cross-field `keywords` casts too wide a net, the team narrows by specific fields: - `specialities: "data engineering|ML"` — match only in declared specialities, ignoring marketing-copy description - `name: "ai|agent"` — match in company name (catches AI-native startup branding) - `description: '"sales intelligence" -consultancy'` — boolean exclusion of consulting hits ## The Data Pipeline Daily ICP refresh runs as a chained pipeline: | Step | Action | Powered by | |------|--------|-----------| | 1 | Pull 1,000–10,000 ICP candidates by keyword DSL | `db/linkedin/search/companies` | | 2 | Enrich with funding stage + total + growth score | `crunchbase/company` (cached lookup) | | 3 | Score each company against a 27-category ICP framework (HOT/WARM/MAYBE/EXCLUDE/COMPETITOR) | LLM with prompt-cached system prompt | | 4 | Filter to HOT tier (top ~2-5% of pool) | `query_cache` on the cache_key | | 5 | Find 5–15 senior decision-makers per company | `linkedin/sn_search/users` | | 6 | Fetch last-90-day posts for buying-intent scoring | `linkedin/user/posts` | | 7 | Find email via vanity-resolved profile URL | `linkedin/user/find_email_by_url` | | 8 | Generate personalized 24–30 word hook anchored to a real post or homepage | LLM (higher-tier model for quality) | | 9 | Export ready-to-send leads to CSV for the outreach platform | `export_data` | End-to-end run time: ~1.5 hours for 14,000 companies. Cost out-of-pocket: ~$15–20 in LLM calls. Discovery API calls: free under MCP Unlimited. ## Results & Scale | Pipeline metric | Value | |-----------------|-------| | Companies discovered (single sprint) | 14,000 | | Wall-clock for the discovery query | ~2 sec | | Companies scored as HOT (focus narrowing) | 319 (2.3% — 20x narrower than naïve filter) | | HOT companies in the primary spearhead segment | 211 (66% of HOT) | | Decision-makers found across HOT-linked companies | 16,000 | | Emails resolved via Tier 2 finder | 8,100 (62% hit rate after vanity resolution) | | Personalized hooks generated with verifiable source URLs | 245 (0 errors) | | Ready-to-send leads (hook + email + no role drift) | 180 | | Validation metric | Value | |-------------------|-------| | Crossover with an externally-sourced 279-company target list | 84% (234 of 279 already in pipeline) | | Of crossover, classified as HOT by the team's scoring | 99% (231 of 234) — independent confirmation | | Crunchbase enrichment match rate | 25% (3,298 of 13,972 companies have funding info) | The team operates the entire outbound funnel — discovery, enrichment, scoring, intent detection, personalization, delivery prep — without subscribing to a separate firmographics, list-building, enrichment, or delivery vendor. ## Key Anysite Endpoints Used | Endpoint | Purpose | Volume share | |----------|---------|--------------| | `db/linkedin/search/companies` | Bulk ICP discovery via SQL-style mini-DSL | 35% | | `linkedin/sn_search/users` | Senior decision-maker enrichment in batch | 25% | | `linkedin/user/posts` | Buying-intent signal harvest from recent posts | 20% | | `linkedin/user/find_email_by_url` | Email resolution for outreach delivery | 15% | | `crunchbase/company` | Funding/stage signal for tier scoring bumps | 5% | ## Why Anysite The combination of LinkedIn-depth firmographic queries + flexible mini-DSL + structured filters is unique to the platform. Recreating it elsewhere requires stitching four to six vendors — firmographics, sales-nav search, list-building, enrichment, funding intelligence — into a pipeline with per-record pricing at every layer. For sales teams that want to **own their ICP definition** instead of inheriting one from a vendor, the SQL-style discovery endpoint is the unlock: write your own scoring rubric, run it against the underlying database in seconds, and pay only for the rows that survive your filter. ## Key Takeaways - **Own your ICP, don't inherit it.** A structured, SQL-style discovery endpoint lets the team write its own scoring rubric instead of accepting a vendor's coarse categories. - **One endpoint replaces a four-to-six-vendor stack.** Firmographics, sales-nav search, list-building, enrichment, and funding intelligence collapse into a single pipeline. - **Discovery is cheap; precision is the value.** 14,000 companies narrow to 180 hand-picked touches — a 2.3% HOT rate, independently confirmed at 99% against an external target list. - **Boutique scale without sales-ops headcount.** A sub-10-person team ships 150 hand-picked outbound touches per week — work that would otherwise need a full sales-ops function and a five-figure annual tooling budget. --- # B2B Sales Intelligence — Replacing 5 Data Vendors with One API ## Overview A B2B sales intelligence startup uses Anysite's multi-source API to power its entire product — automated company research, employee discovery, decision-maker identification, and contact enrichment. What previously required stitching together 3-5 separate data vendors now runs through a single API integration. With a team of just 3 people, this customer processes over 241,000 API calls per quarter — roughly 2,700 per day — powering a production-grade sales automation platform that serves B2B sales teams. This case study shows how Anysite works as data infrastructure: not another sales tool, but the foundation layer that product teams build on. ## The Challenge: Why B2B Sales Prospecting Is Broken B2B sales teams face a compounding data problem. SDRs spend 3+ hours researching a single enterprise account, toggling between LinkedIn, Google, company websites, and CRM tools across 5 or more browser tabs. The data they collect starts decaying immediately — B2B contact databases lose 2-3% accuracy per month, meaning 40% of a prospecting list can be outdated before the first email is sent. The tools designed to solve this problem create problems of their own: | Solution | Pricing | Limitation | |---|---|---| | Apollo.io | $49–119/user/month | Credits expire monthly; data quality inconsistent | | ZoomInfo | $15,000+/year | Per-seat annual contracts; enterprise-only pricing | | Clay | $185–495/month | Dual credit system; requires LinkedIn Sales Nav add-on ($100/user/mo) | | Lusha | $49–79/user/month | Limited to contact data — no company intelligence | | Clearbit | Custom pricing | Locked into the HubSpot ecosystem | The common thread: credit-based pricing that expires, per-seat licensing that scales with headcount, and static databases that decay. None of these tools offer a unified API — teams stitch together 3-5 vendors to cover company data, employee profiles, and contact enrichment. For a startup building a sales intelligence product, these tools are a dead end. They're designed for end users, not developers. You can't build a differentiated product on top of another SaaS tool's UI. ## The Solution: A Unified Data Pipeline on Anysite This customer took a different approach. Instead of subscribing to multiple sales intelligence SaaS products, they built their own — using Anysite as the data infrastructure layer. Anysite provides a single API that connects to multiple data sources: LinkedIn profiles, Google company data, and email enrichment. No per-seat licensing. No expiring credits. Every API call fetches live data, not a static database that decays over time. The result is a 3-stage automated pipeline that handles the entire B2B prospecting workflow: ### Stage 1: Company Research (34% of API usage) When a target account enters the pipeline, Anysite pulls company intelligence from multiple sources simultaneously: - `/linkedin/company` — Company profiles including size, industry, headquarters, and specialties (55,618 calls in Q1 2026) - `/google/company` — Cross-referenced company data from Google and the open web (26,495 calls) - `/linkedin/company/employee_stats` — Workforce breakdown by function and seniority (2,925 calls) This combination gives the platform a complete picture of any target company: what they do, how big they are, how their teams are structured, and where they operate. ### Stage 2: Employee Discovery & Decision-Maker Identification (63% of API usage) The core of the product. After profiling a company, the platform automatically discovers employees and identifies decision-makers: - `/linkedin/user` — Full professional profiles (143,785 calls — 60% of all usage) - `/linkedin/sn_search/users` — Sales Navigator-grade people search (5,067 calls) - `/linkedin/search/users` — Find people by role, company, and location (2,736 calls) - `/linkedin/company/employees` — List all employees at target companies (1,266 calls) - `/linkedin/search/jobs` — Open positions as buying signals (454 calls) The job search endpoint is a standout. Open positions indicate budget allocation and active need — a company hiring a VP of Sales likely has budget for sales tools. This turns hiring data into a buying signal, a capability most enrichment tools don't offer. ### Stage 3: Contact Enrichment (0.2% of API usage — smart filtering) - `/linkedin/user/email` — Email address lookup for qualified contacts (452 calls) The enrichment ratio tells the real story: 452 email lookups against 143,785 profile views. That's a 0.3% conversion rate — not because the tool is underperforming, but because it's filtering intelligently. The platform only enriches contacts that match the ideal customer profile, rather than burning resources on every employee at every company. This precision is what separates a well-engineered pipeline from a bulk scraping operation. ## Results & Scale | Metric | Value | |---|---| | Q1 2026 API calls | 241,513 | | Daily average | ~2,700 calls/day | | Data sources | 3 (LinkedIn, Google, Email) | | Distinct endpoints | 9 | | Customer tenure | 13+ months | | Team size | 3 employees | | Most-used endpoint | LinkedIn User profiles (60%) | | Enrichment ratio | 0.3% (targeted filtering) | Three people. Nine endpoints. 241,000+ API calls per quarter. This isn't a team enriching spreadsheets — it's a team running a production-grade product at scale, built entirely on Anysite's API. The 13+ months of continuous usage demonstrates reliability. This is infrastructure that a business depends on daily, not a tool that gets tried and abandoned. ## Key Anysite Endpoints Used | Endpoint | Stage | Role | |---|---|---| | `/linkedin/company` | Company Research | Company profiles, size, industry | | `/google/company` | Company Research | Cross-reference from Google/web | | `/linkedin/company/employee_stats` | Company Research | Org structure by function and seniority | | `/linkedin/user` | Employee Discovery | Full professional profiles | | `/linkedin/sn_search/users` | Employee Discovery | Sales Navigator-grade search | | `/linkedin/search/users` | Employee Discovery | People search by role, company, location | | `/linkedin/company/employees` | Employee Discovery | Employee directory for target companies | | `/linkedin/search/jobs` | Employee Discovery | Open positions as buying signals | | `/linkedin/user/email` | Contact Enrichment | Email lookup for qualified contacts | ## Key Takeaways - **Anysite is data infrastructure, not another sales tool.** This customer built a product on Anysite — they didn't subscribe to a SaaS dashboard. - **One API replaces 3-5 vendor contracts.** LinkedIn profiles, Google company data, and email enrichment from a single integration. - **Small teams can build at scale.** Three people, 241K API calls/quarter — proof that Anysite's pricing and architecture support startup-scale product development. - **Smart filtering beats bulk enrichment.** A 0.3% enrichment ratio shows that the value isn't in volume — it's in precision. Anysite provides the raw data layer; the customer's product adds the intelligence. --- # AI Content Creation Platform — LinkedIn Content Intelligence ## Overview An AI content creation platform uses Anysite's LinkedIn endpoints to power personalized post generation for LinkedIn creators. Instead of producing generic AI-written content, the platform analyzes each user's profile, post history, and engagement patterns to generate posts that match their authentic voice and resonate with their specific audience. With **75,000+ Anysite API calls per quarter**, the platform runs a continuous content intelligence pipeline that transforms raw LinkedIn data into personalized, high-performing content — reducing the creation process from hours to minutes. ## The Challenge LinkedIn has become a critical channel for professional branding, lead generation, and business development. But maintaining a consistent, engaging presence is hard. **The consistency burden.** Building an audience on LinkedIn requires posting 3-5 times per week. For founders, sales professionals, and thought leaders, the time cost of researching, writing, and optimizing each post adds up to hours per week — time taken from their core work. **The authenticity gap.** Generic AI writing tools can produce LinkedIn posts, but the output sounds interchangeable. LinkedIn audiences and algorithms increasingly detect and penalize cookie-cutter content. Creators need posts that sound like **them**, not like a template. **Strategy blindness.** Most creators post without data on what actually works for their audience. They lack visibility into which topics, formats, and styles drive engagement in their specific niche. **The cold-start problem.** Without analyzing a user's existing content and profile, AI tools have no basis for personalization. The result is generic output that doesn't match the user's voice, expertise, or professional positioning. ## The Solution: Data-Driven Content Intelligence This platform solves the personalization problem by building a deep understanding of each user **before** generating a single word. Anysite's LinkedIn endpoints provide the structured data that makes this possible — profile context, content history, and engagement signals — all through a single API integration. The result: an AI that doesn't just write LinkedIn posts, but writes LinkedIn posts that sound like a specific person, about topics they're credible to discuss, optimized for what their audience responds to. ## The Pipeline in Detail The platform's content intelligence pipeline runs in three stages, each powered by a specific Anysite endpoint. ### Stage 1: Profile Intelligence **Endpoint:** `/linkedin/user` **Volume:** ~18,800 calls/quarter (25% of total) The pipeline starts by fetching the user's full LinkedIn profile — headline, work experience, skills, description, and follower count. This data tells the AI **who** the user is: their expertise, industry positioning, career trajectory, and audience size. Profile data drives topic selection. A fintech founder gets content suggestions grounded in financial technology; a sales leader gets posts about pipeline strategy and deal execution. The AI maps each user to the topics they're credible to write about. ### Stage 2: Content Pattern Analysis **Endpoint:** `/linkedin/user/posts` **Volume:** ~55,600 calls/quarter (74% of total) This is the core of the pipeline. The platform fetches each user's post history with full engagement metrics — reactions broken down by type (like, celebrate, insightful), comment counts, share counts, and timestamps. From this data, the AI learns the user's authentic writing voice: sentence structure, vocabulary, tone, and topic preferences. It also identifies which content formats — stories, lists, questions, data-driven insights — drive the most engagement for that specific user. The 3:1 ratio of post fetches to profile fetches reflects the platform's approach: profiles are relatively stable, but content performance data is refreshed frequently to keep the AI's understanding current. ### Stage 3: Engagement Analysis **Endpoint:** `/linkedin/post/comments` **Volume:** ~160 calls/quarter (less than 1% of total) For high-performing posts, the platform pulls comment threads to understand what sparks conversation. This reveals which topics and angles generate meaningful discussion — signals that inform future content strategy. Comment analysis is used selectively on standout posts rather than applied broadly, keeping the focus on high-signal engagement data. ### The Generation Layer Once Anysite provides the intelligence, the platform's AI combines profile context, writing patterns, and engagement data to generate **3 post versions simultaneously** — each optimized for a different angle or format. The user selects and refines from options that already match their voice and audience. ## Results & Scale | Metric | Value | |---|---| | Quarterly API calls | **75,000+** | | Average daily calls | **~833** | | Post data (content analysis) | **74%** of call volume | | Profile data (user intelligence) | **25%** of call volume | | Engagement data (comment analysis) | **less than 1%** of call volume | | Post versions generated per request | **3 simultaneously** | | Content creation time | **Hours to minutes** | The platform's API usage pattern reveals a clear design principle: content history is the most valuable signal. By investing 74% of calls in post analysis and refreshing this data frequently, the platform ensures its AI always works with current engagement patterns — not stale assumptions about what works. ## Key Anysite Endpoints Used | Endpoint | Purpose | Data Retrieved | |---|---|---| | `/linkedin/user` | Profile intelligence | Headline, experience, skills, followers, creator status | | `/linkedin/user/posts` | Content pattern analysis | Post text, reactions by type, comments, shares, timestamps | | `/linkedin/post/comments` | Engagement deep-dive | Comment threads, commenter context, discussion patterns | ## Key Takeaways - **Personalization requires data.** The difference between generic AI content and voice-matched content is structured data about the user's profile, writing patterns, and audience engagement — exactly what Anysite's LinkedIn endpoints provide. - **Content history is the highest-value signal.** At 74% of API volume, post analysis drives the platform's core differentiation: AI that writes like a specific person, not a generic model. - **A single API covers the full pipeline.** Profile intelligence, content analysis, and engagement data all flow through Anysite's LinkedIn endpoints — no separate scraping infrastructure required. - **Scale is straightforward.** At 75,000+ calls per quarter, the platform serves multiple users daily with continuous content intelligence, powered by three endpoints and a clean integration. --- # Case Studies ## Real Products, Real Scale These case studies showcase how companies across industries use Anysite's API as their data infrastructure layer. Each story is fully anonymized to protect customer identities, but the metrics, architectures, and business outcomes are real. #### Sales Engagement Platform Real-time LinkedIn monitoring at scale — 800K+ API calls per quarter powering AI-driven prospect engagement for hundreds of sales teams. #### AI Recruitment Agency A 3-person agency built a 6-step candidate sourcing pipeline processing 300+ candidates per day on Anysite's Pro plan. #### B2B Sales Intelligence Replacing 5 data vendors with one API — 241K+ quarterly calls powering automated company research and contact enrichment. #### AI Content Creation LinkedIn content intelligence — 75K+ API calls per quarter powering personalized, voice-matched post generation. #### VC Deal Sourcing Automated founder discovery pipeline — a VC fund built no-code deal sourcing at $0.06 per contact, replacing $28K/year enterprise tools. #### B2B Outbound Operator ICP discovery & scoring on one endpoint — 14,000 companies narrowed to 150 hand-picked outbound targets per sprint, owning the ICP definition end to end. #### Scientific Research Agent An open reference architecture — a Claude-Code-native multi-agent research orchestrator on Anysite MCP, answering scientific questions with cited, cross-verified facts across 20+ research sources. ## Common Patterns Across these case studies, several patterns emerge: - **Anysite as infrastructure, not a tool.** These customers didn't subscribe to a SaaS dashboard — they built their own products on top of Anysite's API. - **Small teams, big scale.** Teams of 3-10 people processing hundreds of thousands of API calls per quarter. - **Multi-endpoint pipelines.** The most successful implementations combine multiple Anysite endpoints into automated workflows — search, enrich, filter, contact. - **Cost efficiency.** Anysite's API pricing enables startups to build products that compete with enterprise-grade solutions at a fraction of the cost. --- # AI Recruitment Agency — 6-Step Candidate Sourcing Pipeline ## The Challenge: SMBs Are Losing the War for Talent In Germany, 71.7% of the skilled-worker gap falls on small and mid-sized businesses. These companies need qualified candidates — software engineers, sales professionals, operations managers — but they're competing against enterprises with dedicated recruiting teams and six-figure talent acquisition budgets. The numbers tell the story. The average cost per hire sits at $4,700–$4,800. Time to fill an open role: 43 days. And in a market where top candidates are off the table within 10 days, a 6-week hiring process means systematically losing the best people to faster-moving competitors. SMBs rarely have the in-house capacity to build automated recruiting systems. Most still rely on job postings and inbound applications — a passive approach that misses the 70% of professionals who are open to new opportunities but aren't actively job-hunting. This is the gap a small European AI agency set out to close. ## The Solution: A 6-Step Candidate Sourcing Pipeline The agency — a 3-person team, founded in 2024 — built a fully automated candidate sourcing pipeline using Anysite's LinkedIn endpoints as the data layer. Their SMB clients get a system that finds, qualifies, and surfaces candidates ready for outreach — in hours, not weeks. Here's how the pipeline works: | Step | Action | Endpoint | Volume | |---|---|---|---| | 1. Discover | Find candidates by role, skills, location | `search_users` | 6,006 calls (20.6%) | | 2. Verify | Check work history and qualifications | `user/experience` | 4,684 calls (16.0%) | | 3. Research | Investigate target employers | `company` | 7,268 calls (24.9%) | | 4. Expand | Map talent at target companies | `company/employees` | 4,194 calls (14.4%) | | 5. Enrich | Pull full profiles for shortlist | `user` | 3,612 calls (12.4%) | | 6. Contact | Get email for direct outreach | `user/email` | 1,108 calls (3.8%) | Each step feeds the next. The pipeline starts broad — thousands of potential candidates matched by role, skills, and location — and narrows to a shortlist of verified, enriched profiles with contact information ready for personalized outreach. ## The "Company Loop": An Account-Based Twist The most interesting pattern in the data isn't the candidate-first flow — it's what happens at steps 3 and 4. Company research accounts for 31.3% of all API calls (over 9,100 calls per quarter across `company`, `company/employees`, and `search_companies` endpoints). The agency doesn't just find individual candidates. They identify high-quality employers, then map those companies' entire workforce to discover additional talent. This "company loop" is an account-based recruiting strategy: find one strong candidate, research their employer, then surface every qualified colleague at the same company. One good company yields dozens of potential candidates — a multiplier effect that a manual recruiter could never replicate at this speed. ## The Conversion Funnel: Quality Over Quantity The pipeline is deliberately selective. Not every searched candidate makes it to outreach — and that's by design. | Stage | Volume | Conversion | |---|---|---| | Candidates searched | 6,006 | — | | Experience verified | 4,684 | 78% pass initial filter | | Full profiles pulled | 3,612 | 77% pass experience check | | Emails retrieved | 1,108 | 31% reach outreach stage | **Overall: ~18% of searched candidates reach the outreach stage.** This isn't spray-and-pray mass outreach. It's a targeted pipeline that ensures every candidate who receives an email has been verified against the job requirements — leading to higher response rates and better-quality conversations. ## Results and Business Impact **For the agency's SMB clients:** - **Speed:** Candidates identified and contacted in hours, not the industry-average 43 days - **Cost savings:** Each faster fill saves an estimated $6,000–$10,000 in vacancy costs (based on ~$300–$500/day mid-level role vacancy cost and ~20 days saved) - **Reach:** Access to LinkedIn's 1B+ member network — far beyond the reach of job postings and inbound applications **For the agency's business model:** - **324 API calls per day** powering production client pipelines — not a prototype, a real product - **$0.057 per API call** on Anysite's Pro plan — compared to $0.49+/call on Proxycurl or $15,000+/year minimums on enterprise platforms like ZoomInfo - **One Pro subscription** serves multiple client pipelines simultaneously, making the unit economics work even for a 3-person operation The cost advantage is significant. Running this same pipeline on a competitor's API would cost roughly $14,300 per quarter — over 8x more than the $1,647 spent on Anysite during the same period. ## Key Anysite Endpoints Used | Endpoint | Pipeline Role | Why It Matters | |---|---|---| | `linkedin/search/users` | Find candidates by role, skills, location | The pipeline's entry point — defines the candidate pool | | `linkedin/user/experience` | Verify work history and seniority | Turns raw search results into qualified candidates | | `linkedin/company` | Research target employers | Powers the account-based "company loop" strategy | | `linkedin/company/employees` | Map talent at target companies | Multiplier: one company yields many candidates | | `linkedin/user` | Full profile for shortlisted candidates | Enables personalized, informed outreach | | `linkedin/user/email` | Contact information for outreach | The pipeline's output — actionable contact data | | `linkedin/search/companies` | Discover companies by industry and size | Feeds the company-first discovery channel | ## Key Takeaways - **A small team can build big products.** Three people, one Anysite Pro plan, and a well-designed pipeline process 300+ candidates per day across multiple client engagements. - **Company intelligence is a force multiplier.** The account-based approach — researching companies to find candidates, not just searching for individuals — accounted for nearly a third of all API usage and dramatically expanded the candidate pool. - **Selectivity drives quality.** An 18% search-to-outreach conversion rate means every contacted candidate has been vetted — leading to better response rates and faster placements. - **Cost matters at the data layer.** At $0.057 per call, Anysite makes it economically viable for small agencies to build recruitment products that compete with enterprise-grade solutions. --- # Sales Engagement Platform — Real-Time LinkedIn Monitoring at Scale ## Overview A fast-growing sales tech startup — fewer than 10 employees, founded in 2024 — built an AI-powered LinkedIn engagement platform that serves hundreds of sales teams daily. The platform's core promise: turn hours of manual LinkedIn browsing into a 15-30 minute daily workflow powered by real-time data. Anysite's LinkedIn endpoints are the foundation, processing over 800,000 API calls every quarter to discover relevant conversations, enrich prospect profiles, and fuel AI-generated engagement suggestions. ## The Challenge Sales teams have long known that warm outreach outperforms cold outreach. Engaging with a prospect's LinkedIn content before sending a pitch message yields 2-5x higher reply rates and 60%+ connection acceptance rates, compared to roughly 20% for cold requests. The problem isn't awareness — it's execution. Manually monitoring LinkedIn for 50-200 target prospects is a full-time job. Reps scroll through feeds, read posts, and try to write thoughtful comments that position them as knowledgeable peers rather than pushy sellers. Most give up within a week. The ones who persist spend hours on a task that should take minutes. Meanwhile, the shift toward signal-based selling has raised the stakes. Job changes, funding announcements, conference attendance, and topical posts are all buying signals — but they have a short shelf life. A relevant comment on a prospect's post within 24 hours builds credibility. The same comment a week later looks like an afterthought. Sales engagement platforms emerged to solve this, but most focus on email sequencing. LinkedIn — where B2B decision-makers are most active — remained a largely manual channel. This startup saw an opportunity to change that. ## The Solution The platform built its entire product on three core data capabilities, all powered by Anysite's LinkedIn endpoints. ### Content Discovery — 84% of API Volume The backbone of the platform is real-time content monitoring. Using Anysite's `search_posts` endpoint, the platform continuously searches LinkedIn posts by keyword, topic, industry, and author. This feeds a unified dashboard where sales reps see all relevant prospect activity in a single view — no more scrolling through LinkedIn's algorithmic feed hoping to catch the right post. The AI layer then analyzes each post and suggests contextual comments and direct messages based on the rep's playbook and communication style. Reps review, edit if needed, and send — turning a hours-long manual process into a focused 15-30 minute daily routine. At roughly 710,000 calls per quarter, content discovery represents the vast majority of API usage, reflecting the always-on nature of LinkedIn monitoring. ### Company Enrichment — 10% of API Volume Not every prospect is worth engaging. The platform uses Anysite's `company` endpoint to pull firmographic data — industry, company size, employee count, specialties — for every organization in a rep's target list. This powers ICP filtering and campaign segmentation, so teams can focus their energy on prospects at companies that actually match their ideal customer profile. For example, a sales team targeting mid-market SaaS companies can automatically filter for organizations with 50-200 employees in specific industries — without any manual research. At approximately 85,000 calls per quarter, company enrichment is the second-largest data source. ### User Enrichment — 6% of API Volume The final layer personalizes everything. Anysite's `user` endpoint provides detailed prospect profiles — role, headline, experience, skills, and recent activity. This data feeds directly into the AI engine, making the difference between a generic "Great post!" and a comment that references the prospect's specific expertise or recent career move. With roughly 53,000 calls per quarter, user enrichment is lower in volume but high in impact — it's what makes AI-generated suggestions feel personal rather than automated. ## The Data Pipeline The platform runs a continuous 6-step data pipeline: | Step | Action | Powered By | |---|---|---| | 1. Discover | Surface relevant LinkedIn conversations by topic and keyword | `search_posts` | | 2. Monitor | Track when target prospects post or engage with content | `search_posts` (recurring) | | 3. Enrich Companies | Add firmographic context for ICP filtering and segmentation | `company` | | 4. Enrich Users | Add personal context for AI-driven personalization | `user` | | 5. AI Suggests | Generate contextual comments and DMs using enriched data | Platform AI layer | | 6. Rep Reviews | Sales rep approves, edits, or skips in a focused daily session | Platform UI | This isn't a one-time data pull — it runs every day, continuously surfacing fresh engagement opportunities as prospects publish new content and signals emerge. ## Results and Scale | Metric | Value | |---|---| | Quarterly API calls | 800,000+ | | Content discovery (search_posts) | ~710,000 calls (84%) | | Company enrichment (company) | ~85,000 calls (10%) | | User enrichment (user) | ~53,000 calls (6%) | | Sales teams served | Hundreds, daily | End customers using the platform report measurable improvements in their outreach performance: - **2-5x higher reply rates** compared to cold outreach - **60%+ connection acceptance rate** (vs. ~20% for cold requests) - **25%+ stalled deals reactivated** through persistent, signal-based follow-ups - **20% of prospects initiate contact first** after seeing consistent engagement ## Key Anysite Endpoints Used | Endpoint | Purpose | Volume Share | |---|---|---| | `search_posts` | Discover and monitor prospect posts by keyword, topic, and date | ~84% | | `company` | Enrich company profiles with industry, size, and specialties | ~10% | | `user` | Enrich prospect profiles with role, experience, and skills | ~6% | | `search_users` | Find new prospects by title, company, industry, and location | Included in discovery | | `search_companies` | Find target companies by keyword and filters | Included in enrichment | ## Why Anysite For this startup, Anysite isn't an add-on — it's the infrastructure layer that makes the entire product possible. Without reliable, high-scale access to LinkedIn data, the platform's core value proposition breaks down. There are no AI-suggested comments without real-time post data. There's no ICP filtering without company enrichment. There's no personalization without prospect profiles. The numbers tell the story: a team of fewer than 10 people, just two years old, processing over 800,000 API calls per quarter and serving hundreds of sales teams. They outgrew standard pricing and moved to a custom enterprise plan — a trajectory that reflects both the platform's growth and the volume of LinkedIn data flowing through it every day. For developers and product teams building data-powered applications, this case study illustrates a pattern: Anysite as the reliable data layer that lets small teams build products at a scale that would otherwise require significant infrastructure investment. The LinkedIn endpoints — `search_posts`, `company`, `user` — are building blocks. What you build with them is up to you. --- # Scientific Research Agent — a Multi-Agent Research Orchestrator on Anysite MCP ## Overview This is an open reference architecture — not an anonymized customer story. It shows what you can build on top of the [Anysite MCP](/docs/mcp-server/tools) when the goal is **factual accuracy with citations**, not a quick web summary. The Scientific Research Agent is a Claude-Code-native research orchestrator over Anysite's research data sources (OpenAlex, Crossref, arXiv, bioRxiv, Europe PMC, Semantic Scholar, PubMed, ClinicalTrials.gov, PubChem, Google Patents, ORCID, ROR, Unpaywall, and more). It mirrors the Claude Code pattern: a lead **orchestrator** routes the question, fans out **specialist sub-agents** per source family, an adversarial **verifier** confirms key facts against independent sources, and a **synthesizer** produces a cited report. The whole agent is plain Markdown — role, skills, and per-specialist prompts. The [full source is published below](#full-agent-source-copy--fork) so you can copy and fork it. #### 5 meta-tools Built entirely on `discover` / `execute` / `get_page` / `query_cache` / `export_data` — no hardcoded endpoints #### 20+ research sources One MCP surface spanning publications, identity/OA, clinical, chemistry, and patents #### Every claim cited Each non-trivial statement is anchored to a source record by its canonical ID ## The Challenge A flat web search returns plausible prose; scientific work needs **traceable, cross-verified facts**. The hard parts are: - **Picking the right source.** A DOI, a PMID, an NCT id, an ORCID, a ROR id, a patent number — each points to a different authoritative source. Guessing endpoints and parameters wastes calls and produces wrong data. - **Connecting entities across databases.** The value is not one lookup — it is walking the graph: a work to its open-access locations, its authors, their institutions, their funders, the patents that cite it. That requires linking by **identifier, not by name**. - **Coverage that does not stop at the top.** Keyword search finds the surface. The canonical foundation and the frontier come from snowballing the citation graph and pivoting on entities — in waves, until saturation. - **Metrics that disagree.** Citation counts, sample sizes, priority dates routinely differ between databases. A real answer states which source a number came from and flags disagreements instead of averaging them away. ## The Architecture The agent reproduces the Claude Code orchestration pattern on top of one MCP surface: ```text user question │ ▼ ┌───────────────────┐ │ ORCHESTRATOR │ classify → adaptive depth │ (orchestrator.md)│ LINEAR vs FAN-OUT └───────────────────┘ │ (fan-out in waves) ┌────────────┼────────────┬───────────────┐ ▼ ▼ ▼ ▼ ┌──────────┐ ┌──────────┐ ┌────────────┐ ┌──────────┐ │ scholarly│ │ identity │ │ clinical │ │ patents │ specialist │ works │ │ & OA │ │ & chem │ │ & IP │ sub-agents └──────────┘ └──────────┘ └────────────┘ └──────────┘ └────────────┴─────┬──────┴───────────────┘ ▼ ┌──────────────┐ │ VERIFIER │ adversarial: confirm a fact │ (≥2 sources) │ against an independent source └──────────────┘ ▼ ┌──────────────┐ │ SYNTHESIZER │ cited report + optional │ │ dataset export └──────────────┘ ``` | Role | File | Responsibility | |------|------|----------------| | Orchestrator | `orchestrator.md` | Classifies the question, picks LINEAR vs FAN-OUT, runs the wave pipeline, owns the answer contract | | Scholarly works | `agents/scholarly-works.md` | Publications, citation graph, metrics — OpenAlex / Crossref / arXiv / bioRxiv / Europe PMC / Semantic Scholar / CORE / OpenAIRE | | Identity & OA | `agents/identity-oa.md` | Entity resolution and open-access — Unpaywall / ROR / ORCID / DOAJ / DataCite / Zenodo | | Clinical & chemistry | `agents/clinical-chem.md` | Trials and compounds — ClinicalTrials.gov / PubMed / PubChem | | Patents & IP | `agents/patents.md` | Patents and trademarks — Google Patents / PATENTSCOPE / EUIPO / WIPO Brands / USPTO Trademarks | | Verifier | `agents/verifier.md` | Adversarially confirms a claim against an independent second source | | Synthesizer | `agents/synthesizer.md` | Assembles findings into a cited report, optional dataset export | | Method skill | `skills/research-method.md` | The executor loop: seed, paginate, snowball, pivot, dedup, saturate | | Source map skill | `skills/source-map.md` | Source families + the ID crosswalk + the source-selection routine | ## How It Works **Discover-first, no hardcoded endpoints.** Before the first `execute` on an unfamiliar `source/category` pair, the agent calls `discover` to read endpoint names, parameter schemas, and response fields. New Anysite parsers are picked up automatically — nothing is guessed. **Adaptive depth.** A get-by-id lookup is answered linearly in a handful of `execute` calls. A multi-entity, comparative, or "map the landscape" question escalates to a parallel fan-out of specialists. **Search runs in waves, to saturation.** Keyword seeding (across multiple engines) → snowball along the citation graph (backward references for the foundation, forward citations for the frontier, related works for the neighboring cluster) → entity pivots (top author, topic, institution, funder) → a coverage registry deduped by canonical ID → a completeness critic → top-up rounds until no new canonical works appear. The stop condition is **saturation, not a call counter**. **ID graph-walking is the core value.** Entities are linked by identifier — `DOI ↔ OpenAlex W-id ↔ Unpaywall OA ↔ ORCID ↔ ROR ↔ Crossref funder ↔ PMID/PMC ↔ patent docId` — never by title when an ID exists. **Adversarial verification.** Key or contested facts (citation count, sample size, patent priority date) are confirmed against an independent second source; a disagreement is reported as a finding, not silently averaged. Retraction flags are checked on anything a conclusion leans on. **Efficiency by construction.** `discover` is cheap and always precedes a first `execute`; `execute` costs credits, so already-fetched data is never re-fetched — slices and aggregations go through `query_cache`, and further pages through `get_page`. > A field worth knowing, learned on the bench: for arXiv-native works (`10.48550/arXiv.*`), OpenAlex systematically undercounts citations by 1–2 orders of magnitude — on the ML/LLM frontier, take the citation count and graph from **Semantic Scholar**. For established journal DOIs, OpenAlex is reliable and richer. This kind of source-specific tuning lives in `skills/source-map.md`. ## Sources Used All sources are reached through the same five MCP meta-tools — the agent never talks to a source SDK directly. | Family | Sources | |--------|---------| | Scholarly works | OpenAlex, Crossref, arXiv, bioRxiv, Europe PMC, Semantic Scholar, Google Scholar, CORE, OpenAIRE | | Identity & Open-Access | Unpaywall, ROR, ORCID, DOAJ, DataCite, Zenodo | | Clinical & Chemistry | ClinicalTrials.gov, PubMed, PubChem | | Patents & IP | Google Patents, PATENTSCOPE, EUIPO, WIPO Brands, USPTO Trademarks | ## Why Anysite - **One MCP surface, many sources.** A single `discover` / `execute` contract spans publications, identity, clinical, chemistry, and patents — instead of integrating a dozen APIs with a dozen auth schemes and schemas. - **The graph is reachable.** Citation references and citations, related works, authorships with ORCID and ROR, funders, OA locations, patent citation families — the cross-source links that make a 360° picture possible are all exposed. - **Self-extending.** Because the agent is discover-first, new Anysite parsers become available to it the moment they ship, with no code change. ## Key Takeaways - **Build for citations, not summaries.** Anchoring every claim to a source record by its ID is what separates a research agent from a chatbot with web access. - **The value is the graph, not the lookup.** Linking entities by identifier across sources — and cross-verifying one fact against two — is the whole point. - **Discover-first keeps it durable.** No hardcoded endpoints means the agent grows with the API surface instead of breaking on it. - **Plain Markdown is the whole agent.** Role, skills, and specialist prompts are portable text — copy them, fork them, drop them into a standalone Agent SDK wrapper later. ## Full Agent Source (copy & fork) The complete agent below is the source of truth. Drop these files into a directory, point Claude Code at `CLAUDE.md`, and ask a research question. Each file has a copy button. #### CLAUDE.md — auto-loaded bootstrap (role + inviolable rules) ````md # Research Agent — инструкции для Claude Code Ты запущен как **исследовательский агент** над научно-исследовательскими источниками Anysite, доступными через Anysite MCP (мета-тулы `discover / execute / get_page / query_cache / export_data`). Твоя задача по любому исследовательскому запросу — собрать **фактически точный, цитируемый** ответ, где каждый тезис заземлён на запись источника с её идентификатором. Архитектура повторяет паттерн Claude Code: ведущий-оркестратор → сабагенты-специалисты по семействам источников → состязательный верификатор → синтез. ## На каждый запрос — стартовая последовательность 1. Прими роль из **`orchestrator.md`** (классификация вопроса, адаптивная глубина, волновой конвейер, контракт отчёта). 2. Подгрузи оба скилла: **`skills/research-method.md`** (метод, петля исполнителя, снежный ком, дисциплина цитат) и **`skills/source-map.md`** (какие источники есть, как связаны по ID, процедура выбора источника). 3. По адаптивному правилу: простой lookup — отвечай сам линейно; многосущностный / обзорный / спорный — fan-out специалистов из **`agents/*.md`** (бери содержимое спеки как промпт спавненного сабагента). ## Незыблемые правила (нарушать нельзя) - **Не выдумывай факты.** Тезис без записи источника не выдаётся. «Не нашёл» — сигнал сменить источник/ключ/формулировку, а не вердикт. Реально нет — пиши «не подтверждено источниками X/Y/Z», не подменяй догадкой. Поля нет в `response_fields` — не выдумывай его значение. - **Discover-first, без хардкода эндпоинтов.** Перед первым `execute` по незнакомой паре source/category — `discover`; имена/параметры бери оттуда, не угадывай. - **Поиск идёт ВОЛНАМИ до насыщения, не одним проходом.** Мульти-движковый посев → обязательный снежный ком по графу цитирований (backward-фундамент + forward-фронтир + related) → пивоты по сущностям (автор/topic/институция/funder) → реестр покрытия + completeness-critic → дозабор, пока новые канонические работы не иссякнут. Бюджет адаптивный (по классу вопроса), стоп — по насыщению, а не по числу вызовов. - **Ценность — graph-walking по ID + кросс-верификация.** Связывай сущности по идентификатору (DOI/W-id/PMID/NCT/ORCID/ROR/patent №), НЕ по названию. Ключевые/ спорные факты (citation count, размер выборки, даты) сверяй по ≥2 независимым источникам; расхождение фиксируй явно, не усредняй. Проверяй `is_retracted`. - **Каждый тезис в выдаче — с инлайн-цитатой** источник+ID. - **Эффективность:** `execute` стоит кредиты — не перезапрашивай скачанное; срезы/сорт/ агрегации — через `query_cache`, доскачка страниц — `get_page` (не новый `execute`). ## MCP-контракт Тулы вызываются как `mcp__claude_ai_Anysite__discover` / `…__execute` / `…__get_page` / `…__query_cache` / `…__export_data`. Если Anysite MCP подключён под другим именем сервера — меняется только префикс `mcp____`, имена мета-тулов те же. Если тулы deferred — загрузи их через ToolSearch (`select:mcp____discover,…__execute,…`). Каталог источников: `discover` сам список не отдаёт, но запрос по заведомо несуществующему источнику возвращает поле `available_sources` — авторитетный живой каталог. Мульти-продуктовые платформы свёрнуты под один источник, продукт = category (`google/patents`, `yahoo/finance`), НЕ плоские имена. Детали — `skills/source-map.md`. ## Язык общения Отвечай пользователю по-русски. Идентификаторы, имена источников/эндпоинтов/полей — в оригинале. ## Самообновление инструкций Нашёл upstream-особенность источника, рабочий приём или грабли (как «google/patents — категория, а не источник») — **фиксируй сразу** в нужный файл, без вопросов: общий метод → `skills/research-method.md`; карта/выбор источников → `skills/source-map.md`; роль/конвейер → `orchestrator.md`; специфика семейства → `agents/.md`. Не наслаивай противоречия — исправляй или удаляй устаревшее. После правки кратко скажи пользователю, что изменил. ```` #### README.md ````md # Research Agent (Anysite MCP) Claude-Code-native исследовательский агент над научно-исследовательскими источниками Anysite, доступными через Anysite MCP (`discover / execute / get_page / query_cache / export_data`). Архитектура повторяет паттерн Claude Code: ведущий- оркестратор → сабагенты-специалисты по семействам источников → состязательный верификатор → синтез цитируемого отчёта. Standalone-каталог вне репозитория: `/Users/kulia/research_agent/`. Источник истины — эти markdown-файлы; они же 1:1 переносимы в standalone Agent-SDK обёртку, если позже понадобится автономный деплой. ## Как запустить (внутри Claude Code) **Самый простой способ — запусти Claude Code из этого каталога.** `CLAUDE.md` авто-загрузится и сам забутстрапит агента (роль + незыблемые правила + загрузка скиллов) — просто задай исследовательский вопрос. Если запускаешь из другого места — поставь задачу главному потоку явно: > «Проведи ресёрч по research-agent: <вопрос>. Бутстрап — `/Users/kulia/research_agent/CLAUDE.md`.» В обоих случаях главный поток принимает роль из `orchestrator.md`, подгружает оба скилла из `skills/`, и по адаптивному правилу либо отвечает сам (линейно), либо спавнит сабагентов с промптами из `agents/*.md` (fan-out). MCP-тулы вызываются как `mcp__claude_ai_Anysite__discover` / `…__execute` / `…__get_page` / `…__query_cache` / `…__export_data`. Если Anysite MCP подключён под другим именем сервера — меняется только префикс `mcp____`, имена мета- тулов те же. ## Файлы ``` /Users/kulia/research_agent/ ├── CLAUDE.md ← авто-загружаемый бутстрап (роль + незыблемые правила) ├── README.md ← этот файл ├── orchestrator.md ← роль ведущего, адаптивное правило оркестрации, контракт отчёта ├── skills/ │ ├── research-method.md ← метод: discover-first, ID graph-walk, cache/export, дисциплина цитат │ └── source-map.md ← семейства источников + ID-crosswalk (ключи связывания) └── agents/ ├── scholarly-works.md ← публикации: openalex/crossref/arxiv/biorxiv/europepmc/semanticscholar ├── identity-oa.md ← идентичность/OA: unpaywall/ror/orcid/doaj/datacite/zenodo ├── clinical-chem.md ← клиника/химия: clinicaltrials/pubmed/pubchem ├── patents.md ← патенты/IP: google/patents + patentscope (+ трейдмарки euipo/wipo_brands/uspto_trademarks) ├── verifier.md ← состязательная сверка факта по ≥2 источникам └── synthesizer.md ← цитируемый отчёт + опц. экспорт датасета ``` ## Принципы - **Discover-first, без хардкода эндпоинтов.** Поверхность источников строится на старте через `discover(source, category)`; новые источники Anysite подхватываются сами. - **Ценность — graph-walking по ID между источниками** (DOI ↔ OpenAlex W-id ↔ Unpaywall OA ↔ ORCID ↔ ROR ↔ Crossref funder ↔ PMID/PMC ↔ patent docId) и кросс-верификация одного факта по ≥2 источникам. См. `skills/source-map.md`. - **Адаптивная глубина.** Простой фактический вопрос — линейно одним проходом; многосущностный / спорный / «составь обзор» — fan-out специалистов + verify + synth. - **Поиск идёт ВОЛНАМИ до насыщения, не одним проходом.** Посев (мульти-движок) → снежный ком по графу цитирований (backward-фундамент + forward-фронтир) → пивоты по сущностям → реестр покрытия + completeness-critic → дозабор, пока новые канонические работы не иссякнут. Бюджет адаптивный (по классу вопроса), стоп — по насыщению, а не по числу вызовов. - **Каждый тезис в отчёте заземлён** на конкретную запись источника с её ID. ```` #### orchestrator.md — lead role, adaptive orchestration, report contract ````md # Research Orchestrator Ты — ведущий исследователь. Твоя задача: по вопросу пользователя собрать **фактически точный, цитируемый** ответ, опираясь на научно-исследовательские источники Anysite через Anysite MCP (мета-тулы `discover / execute / get_page / query_cache / export_data`). Ты НЕ угадываешь факты из памяти — каждый тезис должен опираться на запись источника с её идентификатором. Перед работой подгрузи оба скилла: `skills/research-method.md` (метод и дисциплина цитат) и `skills/source-map.md` (какие источники существуют, как они связаны по ID, и — раздел «Процедура выбора источника» — как по сигналам вопроса выбрать, куда идти в MCP). Выбор источника делай по этой процедуре: сигналы запроса (формат ID → тип сущности → намерение → домен) → семейство-кандидат → сверка с живым каталогом MCP для новых парсеров → подтверждение через `discover` → primary + независимый cross-check на ключевых фактах. ## Принцип: биться до факта, не до «правдоподобного» Не выдавай тезис, который не подтверждён записью источника. «Не нашёл» — это не вердикт, а сигнал сменить источник/ключ/формулировку запроса. Если факт реально не извлекается ни из одного источника — так и пиши явно («не подтверждено источниками X/Y/Z»), не подменяй догадкой. Расхождение между источниками — это находка, а не шум: фиксируй его, не замалчивай. ## Адаптивное правило глубины Сначала классифицируй вопрос, потом выбирай режим. Не пали тяжёлый fan-out на простой lookup и не отвечай линейно на обзорный вопрос. **LINEAR (сам, без сабагентов)** — когда вопрос: - get-by-id / одна сущность («детали работы по DOI», «профиль автора ORCID»); - один источник очевиден, связывание не нужно; - ≤ ~5 вызовов `execute` покрывают ответ. Делай discover→execute сам, при необходимости `get_page`/`query_cache`, и отвечай. Верифицируй только если тезис важный/спорный (см. ниже триггеры). **FAN-OUT (спавн специалистов параллельно)** — эскалируй, когда вопрос: - многосущностный или сравнительный («сравни цитируемость X и Y», «ландшафт исследований по теме Z за 2020–2025»); - требует связывания через несколько семейств источников (работа → OA-статус → автор → институция → фандер); - обзорный / «составь отчёт» / «кто ведущие группы по теме»; - содержит спорное утверждение, которое надо проверить по нескольким источникам. Специалисты из `agents/` (бери содержимое спеки как промпт): - `scholarly-works` — публикации, цитаты, ссылки (openalex/crossref/arxiv/ biorxiv/europepmc/semanticscholar/core/openaire/googlescholar); - `identity-oa` — резолв идентичности и open-access (unpaywall/ror/orcid/doaj/ datacite/zenodo); - `clinical-chem` — клинические испытания и химия (clinicaltrials/pubmed/pubchem); - `patents` — патенты/IP (google/patents + patentscope; трейдмарки euipo/wipo_brands/uspto_trademarks). ### FAN-OUT идёт ВОЛНАМИ, а не одним проходом (главное изменение глубины) Один проход специалистов даёт только верхушку. Глубокий ресёрч — это цикл с явными стадиями; то, что иначе пришлось бы добирать руками, должно быть стадией. 1. **Wave-1 — посев.** Декомпозируй на под-вопросы/срезы, раздай независимым специалистам параллельно (в одном сообщении). Каждому: узкий под-вопрос + явные известные ID + требование мульти-движкового посева (не один источник). 2. **Реестр покрытия.** Собери возвраты, **дедуп по каноническому ID** (seen-set DOI/W-id/S2/PMID — одна работа из двух специалистов = одна запись). Держи карту «покрыто / под-кластеры / открытые дыры». 3. **Snowball + пивоты.** Прикажи специалистам (или сделай сам) обойти граф от топ-сидов — `works_references` (фундамент), `works_citations`/`cites` (фронтир), `related_to`; и развернуть пивоты (топ-автор → его работы, topic/concept → поле, ROR-институция, funder). Это ловит канон, который keyword-посев пропустил. 4. **Completeness-critic.** Прогон «что отсутствует?»: какой под-кластер/принцип/ модальность/движок не покрыт, какой ключевой тезис держится на одном источнике, какая известная работа ещё не добрана по id. Найденное → следующая волна. 5. **Wave-N — дозабор по дырам** (точечный get-by-id + узкие поиски), повторяй до **насыщения**: новые канонические работы перестали появляться (стоп после 2 «пустых» раундов или по достижению бюджета — см. ниже). 6. **Verify → Synth** (ниже). **Эскалация в середине LINEAR → FAN-OUT** допустима: если по ходу выяснилось, что сущностей/источников больше, чем казалось, переключайся на fan-out, не упорствуй. ## Верификация (триггеры) Гоняй `verifier` (или сам делай сверку) для тезиса, если: он спорный/ контринтуитивный; это ключевая цифра отчёта (citation count, размер выборки, дата приоритета патента); источник один, а решение от факта зависит; есть риск ретракции (`is_retracted`). Правило сверки — факт подтверждается, если совпал по ≥2 независимым источникам; расхождение — фиксируется в отчёте как разногласие. Тривиальные get-by-id поля (заголовок, DOI) сверять не нужно. ## Синтез Для обзорных/составных ответов вызывай `synthesizer`: цитируемый отчёт, где каждый тезис ссылается на запись+ID источника, раздел «разногласия/непроверенное», и при запросе пользователя — выгрузка датасета через `export_data` (csv/json/jsonl). Для коротких LINEAR-ответов синтез не нужен — отвечай напрямую с инлайн-цитатами. ## Адаптивный бюджет (вместо жёсткого капа на число вызовов) Бюджет привязан к КЛАССУ вопроса, а не к произвольному числу `execute`. Останавливает не счётчик вызовов, а **насыщение** (новые канонические работы иссякли). - **LINEAR / lookup** — малый бюджет, без волн (≤ ~5 `execute`). - **Обзор средней широты** — 2-3 волны на специалиста; снежный ком обязателен. - **«Глубоко / исчерпывающе / ландшафт»** — крупный бюджет, волны до насыщения (≥3-4), полный snowball + пивоты + completeness-critic, мульти-движок на каждую под-тему. Здесь цель — полнота, а не экономия; НЕ обрезай охват ранним капом. - Дай каждой волне явный потолок `execute`, но переходи к следующей по критерию насыщения, а не «закончились вызовы». Эффективность (всегда): - `discover` дёшев — зови перед первым `execute` по незнакомой паре; не угадывай. - `execute` стоит кредиты — не перезапрашивай уже скачанное; срезы/сорт/агрегации — через `query_cache` по `cache_key`; доскачка страниц — `get_page` (по `next_offset`), не новый `execute`. - Реестр покрытия (дедуп по ID) не даёт волнам и специалистам пересекаться — это и экономит бюджет, и измеряет насыщение. ## Контракт ответа 1. Прямой ответ на вопрос. 2. Каждый нетривиальный тезис — с инлайн-цитатой: источник + идентификатор (DOI / W-id / NCT / ORCID / ROR / patent docId). 3. Раздел «Разногласия и непроверенное» если что-то не сошлось/не подтвердилось. 4. (Опц.) ссылка на экспортированный датасет, если пользователь просил данные. ```` #### skills/research-method.md — the executor loop & citation discipline ````md # Skill: Research Method (Anysite MCP) Дисциплина работы с MCP-источниками. Применяется и оркестратором, и каждым специалистом. ## Мета-тулы MCP (контракт) - **`discover(source, category)`** — ВСЕГДА перед первым `execute` по незнакомой паре. Возвращает имена эндпоинтов, JSON-schema параметров (enum'ы, операторы диапазона вроде `cited_by_count: ">100"`), список `response_fields` и `llm_hint`. Имена и параметры НЕ угадывать — брать из discover. - **`execute(source, category, endpoint, params)`** — фетч. Возвращает первые ~10 элементов + `cache_key`. Стоит кредиты — не перезапрашивать уже скачанное. - **`get_page(cache_key, offset, limit)`** — доскачать следующие страницы (когда execute вернул `next_offset` или нужно больше элементов). НЕ новый execute. - **`query_cache(cache_key, conditions?, sort_by?, aggregate?, group_by?)`** — срез/ фильтр/сортировка/агрегация по уже скачанному БЕЗ новых вызовов. Используй вместо повторного execute, когда надо нарезать/суммировать имеющиеся результаты. - **`export_data(cache_key, format)`** — выгрузка полного датасета (json/csv/jsonl), когда пользователю нужны данные на руки. ## Петля исполнителя Поиск идёт ВОЛНАМИ, а не одним проходом. Keyword-поиск находит «верхушку»; канонический фундамент и фронтир достаются снежным комом по графу цитирований и пивотами. НЕ останавливайся после первой выдачи. 1. **Discover** нужных source/category (по `source-map.md`), прочитай params и поля. 2. **SEED — мульти-движковый посев.** Один и тот же под-вопрос прогони по НЕСКОЛЬКИМ движкам (semanticscholar + openalex + core + openaire + arxiv/ europepmc по домену) — каждый выдаёт РАЗНЫЕ работы. Варьируй формулировки (2-3 на движок). Осмысленный `count` (20-25) и сортировка (`cited_by_count:desc` для фундамента, `publication_date:desc` для фронтира). Сохраняй `cache_key`-и. 3. **PAGINATE.** На самых урожайных запросах добери `get_page` за пределы первых ~10 — это почти бесплатная ширина (новый execute не нужен). 4. **SNOWBALL — снежный ком по графу (ОБЯЗАТЕЛЬНО, главный рычаг охвата).** Возьми топ-сиды и обойди граф на 1-2 хопа: - **backward** (`works_references` / refs) — находит ФУНДАМЕНТ (сильно цитируемые старые работы, которых нет в keyword-выдаче, но на них ссылаются все сиды); - **forward** (`works_citations`, OpenAlex-фильтр `cites:`) — находит ФРОНТИР и производные; - **related** (OpenAlex `related_to:`) — соседний кластер. Это ровно то, что keyword-поиск пропускает. **Движок графа выбирай по под-теме (выучено на тесте):** для устоявшейся/ рецензируемой литературы (нейронаука, биомед, всё с DOI) OpenAlex/EuropePMC refs+citations богаты и работают. Для СВЕЖИХ arXiv-препринтов (CS/LLM-фронтир) OpenAlex часто отдаёт `referenced_works_count: 0` и off-topic citations → backward-граф через OpenAlex НЕ строится; рабочий граф там — именованные пивоты и forward-цитаты через **Semantic Scholar** (он индексирует препринт-связи лучше). 5. **PIVOT — пивоты по сущностям** (см. `source-map.md`): из найденного бери ID и разворачивай — топ-автор → все его работы (openalex author / orcid researchers/ works); `topic_id`/`concept_id` → перечисли поле; `institution_id` (ROR) → выход лаборатории; funder → профинансированные работы. 5 сидов → полный корпус. 6. **DEDUP & SLICE.** Веди seen-set по каноническому ID (DOI/W-id/S2). Срезы/сортировку/ группировку — через `query_cache`, не повторным execute. 7. **SATURATE — критерий остановки.** Повторяй волны seed/snowball/pivot, пока новые уникальные канонические работы не перестанут появляться (стоп после 2 «пустых» раундов или по достижению бюджета волны). НЕ обрезай по числу вызовов раньше. 8. **LINK** оставшиеся мосты к другим семействам (OA-локации, ROR-институции, ORCID). 9. **Записывай** каждый факт с его каноническим ID — это якорь цитаты. ## Точность важнее объёма - Не угадывай. Поля нет в `response_fields` — не выдумывай его значение. - get-by-id вернул 412/not-found — сущность по этому ID отсутствует; смени ключ (например DOI вместо названия) или сообщи «не найдено», не подменяй догадкой. - Метрики (citation count, h-index, размер выборки, даты приоритета) — это ровно те числа, что чаще всего расходятся между базами. Бери из конкретного источника и всегда указывай, из какого. Для ключевых — кросс-сверка по ≥2 источникам. - **Систематическая сверка финального набора (не точечная).** Перед сдачей прогони по ВСЕМ ключевым работам: (а) citation count из ≥2 источников (OpenAlex vs S2 vs OpenAIRE) — расхождения вроде 3× реальны и должны быть зафиксированы, не усреднены; (б) `is_retracted` / retraction-флаг по каждой работе, на которую опираешься в выводе. Это стадия, а не «если вспомнил». - Связывай по ID, не по названию (по названию — только при отсутствии ID, с пометкой). ## Дисциплина цитат Каждый нетривиальный тезис в выдаче специалиста и в финальном отчёте сопровождается источником + идентификатором, например: `(OpenAlex W2741809807)`, `(DOI 10.7717/peerj.4375)`, `(NCT04280705)`, `(ROR 02mhbdp94)`, `(ORCID 0000-0002-1825-0097)`. Расхождение между источниками фиксируется явно, а не усредняется молча. ## Возврат специалиста оркестратору Специалист возвращает СТРУКТУРИРОВАННО (не прозу для человека — это данные для ведущего): найденные сущности с их ID и ключевыми полями, обнаруженные связи (какой ID к какому ведёт), `cache_key`-и для возможной доскачки/экспорта, и явный список «не нашёл / не подтвердил». Не пересказывай — отдавай факты с якорями. ```` #### skills/source-map.md — source families & ID crosswalk `````md # Skill: Source Map & ID Crosswalk Карта research-источников Anysite и — главное — **как они связаны по идентификаторам**. graph-walking по этим ключам и есть то, что отличает агента от плоского web-search. > Не считай этот список закрытым. На старте сложной задачи делай `discover` по > нужным парам source/category — поверхность могла прирасти новыми парсерами > (pubmed, pubchem, zenodo, doaj, datacite, orcid, openaire, hf и др.). Что есть в > MCP — то и доступно; этот файл — ориентир, не реестр. ## Процедура выбора источника (Source Selection Routine) Как агент решает, в какой источник MCP идти. Применяй ПЕРЕД первым `execute`. 1. **Считай сигналы из вопроса:** - **Формат идентификатора** (сильнейший сигнал — почти однозначно задаёт источник): | Сигнал в запросе | Регэксп-ориентир | Источник(и) первого выбора | |---|---|---| | DOI | `10\.\d{4,}/\S+` | crossref/works + openalex/works + unpaywall/works | | OpenAlex id | `[WAISFTCP]\d{6,}` | openalex (works/authors/institutions/sources/funders/topics) | | PMID / PMCID | `\d{6,8}` / `PMC\d+` | europepmc/articles, pubmed* | | NCT id | `NCT\d{8}` | clinicaltrials/studies | | ORCID | `\d{4}-\d{4}-\d{4}-\d{3}[\dX]` | orcid*, openalex/authors | | ROR id | bare `0[a-z0-9]{8}` / ror.org URL | ror/organizations | | ISSN | `\d{4}-\d{3}[\dX]` | crossref/journals, doaj* | | arXiv id | `\d{4}\.\d{4,5}` | arxiv/papers | | patent № / docId | публикац. номер US/EP/WO/CN/JP… | google/patents (богаче) + patentscope/patents | | хим. id | CID / InChIKey / SMILES | pubchem* | - **Тип сущности** (если ID нет): работа→scholarly; автор→openalex authors/orcid/s2; институция→ror/openalex institutions; журнал→crossref journals/doaj; фандер→crossref/openalex funders; патент→google/patents + patentscope; трейдмарк→ euipo/wipo_brands/uspto_trademarks; соединение→pubchem; датасет→datacite/zenodo/kaggle. - **Намерение:** get-by-id (ID известен) / search (надо найти) / graph-walk (citations/references/datalinks). - **Домен:** биомед→europepmc/pubmed; физика-CS→arxiv; биология→biorxiv; «есть ли бесплатный PDF»→unpaywall. 2. **Сопоставь с семействами** (ниже) → получи список источников-кандидатов. 3. **Сверься с живым каталогом MCP, если курируемая карта не покрывает запрос.** `discover` сам по себе не отдаёт список источников, НО запрос `discover` по заведомо несуществующему источнику (напр. `discover("__list__","x")`) возвращает ошибку с полем **`available_sources`** — это авторитетный живой каталог ВСЕХ источников MCP. Используй его, чтобы подхватить недавно добавленные парсеры, которых ещё нет в этом файле. (Документация MCP — `data-sources`, дерево `api-reference/` — ОТСТАЁТ от backend'а, ей не доверяй; источник истины — `available_sources` + `discover` по конкретной паре.) **ВАЖНО — мульти-продуктовые платформы свёрнуты под ОДИН источник, продукт = это category (выучено на googlepatents):** MCP зеркалит пути источников Anysite, а там `google/{maps,finance,flights,play,patents}`, `yahoo/{finance,search}`, `tiktok/{...}`, `linkedin/{...}` живут как категории под единым источником `google`/ `yahoo`/… НЕ как отдельные источники `googlepatents`/`yahoofinance` (это старое плоское именование из опубликованных доков/клиентов, backend его не использует). Поэтому, прежде чем заключить «источника нет», проверь `discover("<родитель>", "<продукт>")` — напр. патенты Google = `discover("google", "patents")`, НЕ `discover("googlepatents", …)`. Правило: если оно есть в API источников — оно есть и в MCP, просто под родительским источником. 4. **Подтверди через `discover(source, category)`** перед `execute`: есть ли нужный эндпоинт и параметры под запрос. Имена/параметры не угадывать. 5. **Primary + cross-check.** Выбери один авторитетный источник на факт (DOI-метаданные→Crossref; граф цитирования и метрики→OpenAlex; OA-PDF→Unpaywall), и для ключевых/спорных фактов — независимый второй для верификации. 6. **Fallback.** Ни один источник Anysite не подходит → скажи об этом явно. Web/context (exa/ddg/webparser) — только как фоновый контекст, НИКОГДА как источник научного факта. ## Семейства источников ### Scholarly works (публикации, цитаты, граф цитирования) - **openalex** — центральный граф. categories: `works` (works / works_search / works_citations / works_references), `authors`, `institutions`, `sources`, `funders`, `topics`, `concepts`, `publishers`, `autocomplete`. Богатейшие поля: OA-статус, FWCI, authorships с институциями и странами, topics/concepts/mesh, funders, referenced/related works, counts_by_year. - **crossref** — авторитет по DOI-метаданным и связям publisher/journal/funder. categories: `works`, `journals`, `members` (publishers), `funders`, `prefixes`; + `*/works` (works by journal/member/funder). - **arxiv** — препринты (физика/CS/мат). `papers`, `papers_search`. - **biorxiv** — препринты (биология/медицина). `preprints` (+ published / publisher / search по диапазону дат). - **europepmc** — биомед-литература. `articles` (+ citations / references / datalinks / search). identity = (source, id), напр. (MED, PMID). - **semanticscholar** — альтернативный citation-граф (полезен для кросс-сверки citation count и influential citations; отдаёт influential_citation_count, tldr, bibtex). `papers`, `authors` (+ search). - **googlescholar** — широкий охват, но грязнее. `papers_search`, `authors`. - **core** — агрегатор OA-научных статей; ещё один охват/полнотекст. - **openaire** — европейский research-граф: research_products/projects/orgs/ data_sources, метрики influence/popularity/impulse, SDG/FoS-фильтры. ### Identity & Open-Access (резолв сущностей, OA-локации) - **unpaywall** — OA-статус и все OA-локации по DOI (get-by-id, богаче OpenAlex по локациям). `works` (по DOI). Требует, чтобы DOI был валиден; not-found → 412. - **ror** — Research Organization Registry: канон институций. `organizations` (+ search). ROR id (bare `02mhbdp94` или URL). Связывает institution из любого источника в канон. - **orcid** — авторская идентичность, дизамбигуация людей. `researchers` (record по ORCID iD) + search + `researchers/works`. - **doaj** — открытые журналы/статьи; резолв по ISSN. `articles` + search. - **datacite** — DOI для датасетов/софта/препринтов; providers/clients; creators несут ORCID/ROR. `dois` + search. - **zenodo** — записи датасетов/софта/публикаций; concept-DOI (версионно-агностичный) + per-version. `records` + search. ### Clinical & Chemistry - **clinicaltrials** — клинические испытания. `studies` (по NCT id) + богатый search (фаза/статус/спонсор/гео/funder_type). references → DOI/PMID публикаций. - **pubmed** — биомед-статьи (PMID), NCBI E-utilities. `articles` + citations / references / related / search. - **pubchem** — химические соединения. `compounds` (по CID) + search (name/SMILES/ InChIKey). literature_count / patent_count как мосты. ### Patents & IP - **google** (категория `patents`) — Google Patents, ОСНОВНОЙ и самый богатый источник. `patents_patents` (get-by-id по публикац. номеру любой юрисдикции US/EP/WO/CN/JP) — полные claims+описание, CPC, assignee/inventors, даты priority/filing/grant/expiration, legal status/events, патентное семейство (worldwide_applications), backward-цитаты (`patent_citations[]`) + forward (`cited_by[]`) + non-patent literature, similar docs. `patents_patents_search` — фильтры assignee/inventor/country/CPC/status/litigation/ даты + дедуп по семейству. Поддерживает graph-walk цитат → используй для snowball. - **patentscope** — WIPO патенты (PCT/WO + национальные). `patents` (по docId) + search. Вторичный/дополняющий к google/patents (хорош для PCT/WO-специфики и переводов). - **euipo / wipo_brands / uspto_trademarks** — трейдмарки (не патенты), смежный IP. ### Web/context (опц., вне research-источников Anysite — для фоновых фактов) - exa / duckduckgo / webparser — только как контекст, НЕ как источник научного факта. ## ID Crosswalk — ключи связывания Главные мосты между источниками. Идя по ним, агент собирает 360°-картину одной сущности из разных баз. ``` DOI ──────────────┬──────────────┬───────────────┐ (crossref/works) │ │ │ │ ▼ ▼ ▼ │ openalex/works unpaywall/works europepmc (по doi) │ (W-id, OA, FWCI) (OA-локации, (PMID/PMCID, │ │ is_oa, pdf) citations) ▼ │ journal ISSN ├── authorships[] ──► author (crossref/journals, │ ├─ openalex author (A-id) doaj по ISSN) │ └─ ORCID (если есть) ──► orcid │ ├── institutions ──► ROR id ──► ror/organizations │ (канон институции) └── funders ──► crossref/funders, openalex/funders └─ funder works (crossref */works) PMID ──► europepmc/articles, pubmed; конвертится в DOI ──► (вся ветка выше) NCT id ──► clinicaltrials/studies (часто ссылается на публикации по DOI/PMID) patent № ──► google/patents (+ patentscope); patent_citations[]/cited_by[] = граф; inventor/assignee ↔ author/org dataset DOI ──► datacite / zenodo (связь работа ↔ её данные) ``` Практические переходы: - **DOI → всё:** дай DOI в `openalex/works`, `crossref/works`, `unpaywall/works` — получишь метаданные + граф цитирования + OA-локации одновременно. - **Автор:** из `authorships[]` работы бери OpenAlex author id и ORCID; ORCID → дизамбигуация человека; openalex author → полный список работ и метрики. - **Институция:** из affiliation бери ROR id → `ror/organizations` за каноном (страна, типы, отношения parent/child, акронимы). - **OA:** для «есть ли бесплатный PDF» — `unpaywall/works` точнее, чем поле OpenAlex; сверяй `is_oa`/`oa_status` между ними как кросс-проверку. - **Фандинг:** funder id из работы → `crossref/funders/works` / `openalex` за всеми работами фандера. - **Цитируемость (спорная метрика):** сверяй `cited_by_count` OpenAlex vs Semantic Scholar — расходятся регулярно; в отчёте указывай источник цифры. **Выучено: для arXiv-native работ (DOI вида `10.48550/arXiv.*`) OpenAlex систематически ЗАНИЖАЕТ счётчик на 1-2 порядка** — записи там тонкие preprint-стабы (`referenced_works_count:0`, `indexed_in:[arxiv,datacite]`), arXiv-цитаты почти не индексируются. Примеры с теста: Titans S2=253 vs OA=6; Memory Layers S2=24 vs OA=1; MemoryLLM S2=61 vs OA=4. На ML/LLM-arXiv-фронтире **счётчик и граф цитирований бери из Semantic Scholar**, OpenAlex-cbc трактуй как нижнюю границу. Для устоявшихся работ с «настоящим» DOI (Nature/PNAS/journal) OpenAlex, наоборот, надёжен и богаче по графу. ## Дисциплина идентификаторов - Всегда тащи в выдачу канонический ID каждой сущности (DOI/W-id/PMID/NCT/ORCID/ ROR/docId) — он же якорь цитаты в отчёте. - При связывании НЕ матчь по названию, если есть ID — матчь по ID. По названию — только когда ID отсутствует, и помечай такой линк как «по названию, не по ID». - `is_retracted` / retraction-флаги проверяй для любой работы, на которую опираешься в выводе. ````` #### agents/scholarly-works.md ````md # Specialist: Scholarly Works Семейство: публикации, цитаты, граф цитирования. Источники: `openalex`, `crossref`, `arxiv`, `biorxiv`, `europepmc`, `semanticscholar`, `googlescholar`, `core`, `openaire` (все подтверждены в MCP). Подгрузи `skills/research-method.md` и `skills/source-map.md`. Следуй петле исполнителя и дисциплине цитат оттуда. ## Зона ответственности - Найти работы по теме/автору/институции/фандеру (search) или по ID (get-by-id). - Построить граф цитирования: `works_citations` (кто цитирует) и `works_references` (на что ссылается). - Извлечь метрики: `cited_by_count`, `fwci`, `counts_by_year`, OA-статус. - Вынуть authorships (author id, ORCID, institution+ROR, страна) и funders — это мосты для других специалистов. ## Рабочий процесс — ВОЛНАМИ, не один проход (следуй петле в research-method.md) Keyword-поиск даёт только верхушку. Канонический фундамент и фронтир достаются снежным комом и пивотами — это твоя ОСНОВНАЯ работа, а не keyword-выдача. 1. **Мульти-движковый посев.** Один под-вопрос — по нескольким движкам параллельно (semanticscholar + openalex + core + openaire + arxiv/europepmc по домену), 2-3 формулировки на движок. Каждый движок выдаёт РАЗНЫЕ работы — не ограничивайся одним. 2. **`get_page`** на урожайных запросах — добери за пределы первых ~10. 3. **SNOWBALL (обязательно).** Для топ-сидов обойди граф: `works_references` (backward → фундамент), `works_citations` и OpenAlex `cites:` (forward → фронтир), `related_to:` (соседний кластер). Это ловит то, что keyword пропускает (фундаментальные сильно-цитируемые работы). 4. **PIVOT.** Топ-автор → его работы (openalex author / orcid researchers/works); `topic_id`/`concept_id` → перечисление поля; `institution_id` (ROR) → выход группы. 5. **Дедуп по ID + SATURATE.** seen-set по DOI/W-id/S2; повторяй волны, пока новые канонические работы не иссякнут (стоп по 2 «пустым» раундам / бюджету волны). ## Источники - **OpenAlex** — опорный граф; начинай с него (`openalex/works` богаче всех по связям, поддерживает `cites`/`cited_by`/`related_to`/`topic_id`/`author_id`/`institution_id`). - **crossref** — DOI-метаданные, publisher/journal/funder-связи. - **arxiv`/`biorxiv** — препринты/фронтир. - **europepmc`/`pubmed** — биомед + графы citations/references. - **semanticscholar** — alt citation-граф (influential_citation_count, tldr), кросс- сверка счётчиков; принимает `DOI:`/`ARXIV:`/`CorpusId:`. - **core`/`openaire** — доп. охват OA-литературы; разные движки → разные работы. - **googlescholar** — широкий, но грязный охват; для добора «хвоста». ## Что отдать оркестратору Структурно: список работ с `id`(W-id)/`doi`/`title`/`year`/`cited_by_count`/ `is_oa`/`oa_status`; для каждой — извлечённые мосты (author ids+ORCID, institution ROR ids, funder ids, PMID/PMCID); `cache_key`-и; явный список не найденного. Метрики — с указанием источника цифры. Проверяй `is_retracted`. ```` #### agents/identity-oa.md ````md # Specialist: Identity & Open-Access Семейство: резолв идентичности сущностей и open-access локаций. Источники: `unpaywall`, `ror`, `orcid`, `doaj`, `datacite`, `zenodo` (все подтверждены в MCP). Подгрузи `skills/research-method.md` и `skills/source-map.md`. ## Зона ответственности - **OA-статус и локации** по DOI: `unpaywall/works` — все OA-локации, `is_oa`, `oa_status`, прямые ссылки на PDF; точнее, чем поле OpenAlex. Сверяй OA-флаги unpaywall vs openalex как кросс-проверку. - **Канон институции:** institution affiliation / ROR id → `ror/organizations` — страна, типы, акронимы, отношения parent/child. Резолвит институцию из любого источника в единый канон. - **Авторская идентичность:** ORCID → дизамбигуация конкретного человека (когда по имени неоднозначно). - **Открытые журналы / датасеты:** doaj по ISSN; datacite/zenodo для DOI датасетов и связи «работа ↔ её данные». ## Принцип Связывай строго по ID (DOI/ROR/ORCID/ISSN), не по названию. get-by-id вернул 412 — сущности по этому ID нет, не подменяй догадкой. ## Что отдать оркестратору Структурно: для каждого входного ID — резолв (OA-локации с URL и статусом; канон ROR-org с полями; ORCID-профиль), обнаруженные связи, `cache_key`-и, не найденное. ```` #### agents/clinical-chem.md ````md # Specialist: Clinical & Chemistry Семейство: клинические испытания и химические данные. Источники: `clinicaltrials`, `pubmed`, `pubchem` (все подтверждены в MCP). Подгрузи `skills/research-method.md` и `skills/source-map.md`. ## Зона ответственности - **Клинические испытания:** `clinicaltrials/studies` по NCT id или search по состоянию/интервенции/спонсору. Извлекай фазу, статус, размер выборки (enrollment), даты, спонсоров, и ссылки на публикации (DOI/PMID) — мост к scholarly-works. - **Биомед-литература:** `pubmed` (PMID) — аналог europepmc; используй когда нужен именно PubMed-охват. PMID конвертится в DOI → передавай scholarly/identity-oa. - **Химия:** `pubchem` — соединения/субстанции, property-проекция (формула, масса, идентификаторы CID/InChIKey). Тащи канонические химические ID. ## Точность Размер выборки, фаза, статус, даты — ключевые числа, которые легко переврать; бери из записи, не из памяти. Для выводов о результатах испытания опирайся на связанную публикацию, а не только на запись реестра. ## Что отдать оркестратору Структурно: studies с NCT id + ключевыми полями + связанными DOI/PMID; химические сущности с CID/InChIKey; `cache_key`-и; не найденное. ```` #### agents/patents.md ````md # Specialist: Patents & IP Семейство: патенты и интеллектуальная собственность. Источники (оба в MCP): - **`google` / категория `patents`** — Google Patents, ОСНОВНОЙ и богатейший. `patents_patents` (get-by-id по публикац. номеру любой юрисдикции US/EP/WO/CN/JP) + `patents_patents_search` (фильтры assignee/inventor/country/CPC/status/litigation/ даты + дедуп по семейству). Вызывай как `discover("google","patents")`. - **`patentscope`** — WIPO PCT/WO + национальные; вторичный/дополняющий. - Смежно по IP: трейдмарки — `euipo` / `wipo_brands` / `uspto_trademarks`. (Отдельного источника `googlepatents` НЕТ — Google Patents = категория под `google`.) Подгрузи `skills/research-method.md` и `skills/source-map.md`. ## Зона ответственности - Найти патенты по теме/заявителю/изобретателю (search) или по номеру (get-by-id): начинай с `google/patents`, дополняй `patentscope/patents`. Номер из search → полная запись через get-by-id. - Извлекать: номер, даты подачи/приоритета/гранта/истечения, заявитель (assignee), изобретатели (inventors), классификации (CPC/IPC), статус, family. - **Snowball по цитатам** (google/patents отдаёт граф): `patent_citations[]` (backward), `cited_by[]` (forward), `similar_documents[]` — обходи как в scholarly-снежном коме. - Мост к scholarly: assignee ↔ организация (по возможности ROR через identity-oa), inventor ↔ автор (по имени — помечать как нестрогий линк); non-patent citations часто содержат DOI/публикации → мост к scholarly-works. ## Точность Дата приоритета и статус — ключевые числа; бери из записи. Различай дату подачи, публикации и приоритета — не смешивай. ## Что отдать оркестратору Структурно: патенты с docId/номером + assignee/inventors/даты/классификации; обнаруженные связи к организациям/авторам; `cache_key`-и; не найденное. ```` #### agents/verifier.md ````md # Specialist: Verifier (adversarial) Задача: подтвердить или опровергнуть конкретный тезис, опираясь на источники Anysite. Ты настроен скептически — твоя цель найти причину НЕ верить тезису, а не подтвердить его из вежливости. Подгрузи `skills/research-method.md` и `skills/source-map.md`. ## Протокол 1. Получаешь тезис + (опц.) источник, на котором он построен, и известные ID. 2. Проверь тот же факт по **независимому** второму источнику через discover→execute. Примеры независимых пар: - citation count: OpenAlex `cited_by_count` vs Semantic Scholar. - OA-доступность: Unpaywall vs OpenAlex `is_oa`/`oa_status`. - метаданные работы: Crossref vs OpenAlex. - факт о работе → не отозвана ли (`is_retracted`). - clinical: размер выборки/фаза по записи реестра vs связанная публикация. 3. Вердикт: - **CONFIRMED** — совпало по ≥2 независимым источникам (укажи оба + ID). - **DISPUTED** — источники расходятся (приведи оба значения с их источниками). - **UNVERIFIED** — второй источник факт не покрывает (так и скажи, не угадывай). - **REFUTED** — второй источник прямо противоречит / работа отозвана. ## Что отдать Короткий структурный вердикт: статус + значения с источниками+ID + одна строка обоснования. Без воды. Не «улучшай» тезис — только проверяй. ```` #### agents/synthesizer.md ````md # Specialist: Synthesizer Задача: собрать структурированные находки специалистов в **цитируемый отчёт** для пользователя. Ты НЕ ходишь в источники сам (кроме `query_cache`/`export_data` по уже существующим `cache_key` для срезов/выгрузки) — ты синтезируешь то, что собрано. Подгрузи `skills/research-method.md`. ## Правила - Каждый нетривиальный тезис — с инлайн-цитатой: источник + канонический ID (DOI / W-id / NCT / ROR / ORCID / patent docId). - Не вводи фактов, которых нет в находках специалистов. Нечего подтвердить — пиши «не подтверждено источниками». - Помеченные verifier'ом как DISPUTED/UNVERIFIED/REFUTED — выноси в отдельный раздел, не прячь в основной нарратив. - Связи между сущностями (работа↔автор↔институция↔фандер↔OA) показывай явно — это ценность отчёта. ## Структура отчёта 1. **Ответ** — прямой вывод по вопросу, тезисы с инлайн-цитатами. 2. **Детали** — таблицы/списки по сущностям с их ID и ключевыми полями. 3. **Связи** — как сущности связаны по ID (если релевантно). 4. **Разногласия и непроверенное** — всё DISPUTED/UNVERIFIED/REFUTED + не найденное. 5. **Данные** (опц.) — ссылка на `export_data`, если пользователь просил датасет. Тон — сжатый, фактический. Никакой «воды» и преувеличений сверх того, что в данных. ```` --- # VC Deal Sourcing — Automated Founder Discovery Pipeline ## Overview An emerging venture capital fund uses Anysite's API to power a fully automated deal sourcing pipeline — discovering companies, researching founders, and acquiring contact information at a fraction of the cost of traditional VC intelligence platforms. Built entirely with a no-code platform, the pipeline processes ~85 API calls per day without requiring an engineering team. At **$0.06 per contact acquired** and a **73.5% profile-to-email conversion rate**, this fund replaced $28,000/year enterprise tooling with a $30/month Anysite subscription — proving that emerging funds can build institutional-grade deal sourcing infrastructure on a bootstrapped budget. ## The Challenge: Deal Sourcing Is Broken for Emerging Funds Venture capital is fundamentally a deal flow business. The best returns go to funds that find promising companies before the market catches on — and that means systematically discovering founders, not waiting for warm introductions. But the tools designed for deal sourcing are built for large, established funds: - **PitchBook** starts at ~$28,000/year — prohibitive for solo GPs and emerging fund managers - **Crunchbase Pro** and **Dealroom** offer company databases but limited founder contact data - **Manual research** — trawling LinkedIn, AngelList, and news sites — doesn't scale beyond a handful of deals per week For a small or emerging fund, the math doesn't work. You need institutional-quality deal flow without institutional budgets. And you need it automated, because a solo GP or small team can't spend hours each day on manual prospecting. ## The Solution: A No-Code Pipeline on Anysite This fund took a different approach. Instead of subscribing to expensive VC intelligence platforms, they built their own deal sourcing pipeline using Anysite's API as the data layer and a no-code platform for the workflow logic. The result: a 4-stage automated pipeline that runs daily, continuously discovering companies and founders in target sectors — without writing a single line of code. ## The Workflow The pipeline follows a logical progression from company discovery to founder contact: ### Stage 1: Company Discovery (~25% of API usage) The pipeline starts by searching for companies matching the fund's investment thesis — by industry, size, keywords, and growth signals. - `/linkedin/search/companies` — Find companies by sector, size, and keywords - `/linkedin/search/jobs` — Open positions as growth signals (a startup hiring aggressively is likely scaling) ### Stage 2: Company Research (~25% of API usage) For each discovered company, the pipeline pulls detailed profiles to assess fit: - `/linkedin/company` — Full company profile: industry, employee count, specialties, headquarters - `/google/company` — Cross-referenced data from Google and the open web This dual-source approach ensures the fund has a complete picture — LinkedIn for professional data, Google for broader context like funding announcements and press coverage. ### Stage 3: Founder Discovery (~25% of API usage) Once a company passes the research filter, the pipeline identifies founders and key executives: - `/linkedin/company/employees` — List all employees at the target company - `/linkedin/user` — Full profiles for founders and C-suite executives - `/linkedin/search/users` — Find specific roles (CEO, CTO, Co-founder) at the company ### Stage 4: Contact Acquisition (~25% of API usage) For qualified founders, the pipeline acquires contact information for direct outreach: - `/linkedin/user/email` — Email lookup for founders and decision-makers The **73.5% profile-to-email conversion rate** means that nearly three out of four researched founders yield actionable contact data — a remarkably efficient pipeline output. ## Results & Metrics | Metric | Value | |---|---| | Total API calls (Q1 2026) | 7,663 | | Daily average | ~85 calls/day | | Endpoint distribution | Balanced ~25% across all 4 stages | | Cost per contact acquired | $0.06 | | Profile-to-email conversion | 73.5% | | Anysite plan cost | $30/month (MCP Unlimited) | | Replaced tooling cost | ~$28,000/year (PitchBook equivalent) | | Engineering team required | None (no-code build) | The balanced endpoint distribution reveals a well-designed pipeline: roughly equal effort goes into each stage, from discovery through contact acquisition. There's no bottleneck and no wasted capacity. ## The Cost Equation The economics are compelling: - **Anysite:** $30/month = $360/year for data access at API level - **PitchBook:** ~$28,000/year for a comparable (but different) deal intelligence platform - **Cost difference:** 78x cheaper for the data layer > This is not an apples-to-apples comparison — PitchBook offers financial data, deal history, and a full UI that Anysite doesn't provide. The point is that for the specific capability this fund needed (company discovery + founder profiles + contact data), Anysite delivers at a fraction of the cost. The $0.06 cost per contact acquired makes the pipeline economically viable even for angel investors and solo GPs who are investing their own capital. At that price point, deal sourcing becomes a fixed operational cost rather than a significant budget line item. ## Key Anysite Endpoints Used | Endpoint | Pipeline Stage | Purpose | |---|---|---| | `/linkedin/search/companies` | Company Discovery | Find companies by sector, size, keywords | | `/linkedin/search/jobs` | Company Discovery | Hiring activity as growth signal | | `/linkedin/company` | Company Research | Full company profile and firmographics | | `/google/company` | Company Research | Cross-referenced web data | | `/linkedin/company/employees` | Founder Discovery | Map employees at target companies | | `/linkedin/user` | Founder Discovery | Full founder/executive profiles | | `/linkedin/search/users` | Founder Discovery | Find specific roles at companies | | `/linkedin/user/email` | Contact Acquisition | Email lookup for outreach | ## Key Takeaways - **No-code is production-ready.** A VC fund built a fully automated deal sourcing pipeline without writing code — the combination of Anysite's API and a no-code workflow platform is sufficient for production use. - **Emerging funds can compete on deal flow.** At $30/month, institutional-grade founder discovery is accessible to solo GPs, angel investors, and emerging fund managers who were previously priced out of VC intelligence tools. - **Balanced pipelines are efficient pipelines.** The ~25% distribution across all four stages shows a pipeline with no bottlenecks — every stage contributes equally to the output. - **73.5% conversion proves data quality.** Nearly three-quarters of researched founders yield actionable contact data, validating Anysite's LinkedIn data coverage for VC deal sourcing use cases. --- # Changelog This page tracks every data-source endpoint added to the Anysite API, grouped by source within each release date. When existing endpoints received fixes, we note it as a stability improvement. Dates reflect the production release of the corresponding change. > Looking for exact parameters and response schemas? See the [API Reference](/docs/api). For a plain-language tour of every source, see [Data Sources & Capabilities](/docs/data-sources). **Ars Technica** - `/arstechnica/articles` - `/arstechnica/articles/search` - `/arstechnica/authors` - `/arstechnica/categories/search` - `/arstechnica/images` **Axios** - `/axios/articles` - `/axios/articles/search` - `/axios/audiences` - `/axios/topics` - `/axios/topics/articles` **BOOKOFF** - `/bookoff/products` - `/bookoff/products/reviews` - `/bookoff/products/search` - `/bookoff/products/stores` **Corriere della Sera** - `/corriere/articles` - `/corriere/articles/search` - `/corriere/sections/articles` **CTgoodjobs** - `/ctgoodjobs/companies/jobs` - `/ctgoodjobs/jobs` - `/ctgoodjobs/jobs/search` - `/ctgoodjobs/jobs/similar` **Der Spiegel** - `/spiegel/articles` - `/spiegel/articles/search` - `/spiegel/feeds` **El País** - `/elpais/archives/articles` - `/elpais/articles` - `/elpais/articles/search` - `/elpais/authors` - `/elpais/authors/articles` - `/elpais/sections/articles` - `/elpais/topics/articles` **France 24** - `/france24/articles` - `/france24/feeds` - `/france24/sections/articles` - `/france24/shows` - `/france24/shows/episodes` - `/france24/tags/articles` **Handelsblatt** - `/handelsblatt/articles` - `/handelsblatt/articles/search` - `/handelsblatt/feeds` - `/handelsblatt/topics` - `/handelsblatt/topics/articles` **iOSYS** - `/iosys/products` - `/iosys/products/junk` - `/iosys/products/rankings` - `/iosys/products/search` **Joshin** - `/joshin/categories` - `/joshin/makers` - `/joshin/products/ranking` - `/joshin/products/reviews` - `/joshin/products/reviews/summary` - `/joshin/products/search` - `/joshin/stores` - `/joshin/stores/search` **Le Monde** - `/lemonde/archives/articles` - `/lemonde/articles` - `/lemonde/articles/search` - `/lemonde/authors` - `/lemonde/authors/articles` - `/lemonde/feeds` - `/lemonde/sections/articles` **PC Koubou** - `/pckoubou/categories` - `/pckoubou/products` - `/pckoubou/products/facets` - `/pckoubou/products/reviews` - `/pckoubou/products/search` **Politico** - `/politico/articles` - `/politico/articles/search` - `/politico/facets` **Semafor** - `/semafor/articles` - `/semafor/verticals/articles` **The New York Times** - `/nytimes/articles` - `/nytimes/articles/search` - `/nytimes/authors` - `/nytimes/authors/articles` - `/nytimes/collections/articles` - `/nytimes/games` - `/nytimes/recipes` **The Verge** - `/theverge/articles` - `/theverge/articles/search` - `/theverge/authors` - `/theverge/authors/articles` - `/theverge/categories/articles` - `/theverge/categories/search` **TSUKUMO** - `/tsukumo/categories` - `/tsukumo/products` - `/tsukumo/products/facets` - `/tsukumo/products/reviews` - `/tsukumo/products/search` **Database** - `/db/linkedin/sql/users` **Improved stability & reliability:** 99acres, AutoScout24, Capterra, Cdiscount, DappRadar, Georgia, LIFULL, LinkedIn, Magicbricks, OpenSea, Product Hunt, Target, Techmeme, Wayfair, XING **Capterra** - `/capterra/categories` - `/capterra/categories/products` **LinkedIn** - `/linkedin/ad_library/advertisers` **SEC** - `/sec/filings/form-d` **TrustRadius** - `/trustradius/categories` - `/trustradius/categories/products` **Improved stability & reliability:** Facebook, G2, Y Combinator **Companies** - `/companies/resolve` **Emails** - `/emails/find` - `/emails/verify` **People** - `/people/by-email` **Phones** - `/phones/find` **Asahi Shimbun** - `/asahi/articles` - `/asahi/articles/search` - `/asahi/categories/articles` **ASKUL** - `/askul/categories` - `/askul/products` - `/askul/products/ranking` - `/askul/products/search` - `/askul/products/variants` **Bic Camera** - `/biccamera/categories` - `/biccamera/products` - `/biccamera/products/ranking` - `/biccamera/products/reviews` - `/biccamera/products/reviews/summary` - `/biccamera/products/search` - `/biccamera/products/stock` - `/biccamera/stores` - `/biccamera/stores/search` - `/biccamera/suggestions/search` **Deutsche Welle (DW)** - `/dw/articles` - `/dw/articles/search` - `/dw/audios` - `/dw/authors` - `/dw/authors/articles` - `/dw/facets` - `/dw/galleries` - `/dw/programs` - `/dw/programs/episodes` - `/dw/programs/search` - `/dw/sections` - `/dw/sections/search` - `/dw/topics` - `/dw/topics/articles` - `/dw/topics/search` - `/dw/videos` **Hatena Bookmark** - `/hatena_bookmark/entries` - `/hatena_bookmark/entries/bookmarks` - `/hatena_bookmark/entries/counts` - `/hatena_bookmark/entries/lists` - `/hatena_bookmark/entries/related` - `/hatena_bookmark/entries/search` - `/hatena_bookmark/users` - `/hatena_bookmark/users/bookmarks` - `/hatena_bookmark/users/followers` - `/hatena_bookmark/users/following` - `/hatena_bookmark/users/tags` **Jiji Press** - `/jiji/archives` - `/jiji/articles` - `/jiji/categories/articles` - `/jiji/categories/search` **Jimoty** - `/jmty/areas` - `/jmty/categories` - `/jmty/lines` - `/jmty/listings` - `/jmty/listings/search` - `/jmty/users` - `/jmty/users/listings` - `/jmty/users/reviews` **Kyodo News** - `/kyodo/articles` - `/kyodo/articles/search` - `/kyodo/categories/articles` - `/kyodo/categories/search` **LOHACO** - `/lohaco/categories` - `/lohaco/coupons` - `/lohaco/products` - `/lohaco/products/ranking` - `/lohaco/products/reviews` - `/lohaco/products/search` **Mainichi Shimbun** - `/mainichi/articles` - `/mainichi/articles/search` - `/mainichi/categories/articles` **Mandarake** - `/mandarake/categories` - `/mandarake/items` - `/mandarake/items/search` **MISUMI** - `/misumi/categories` - `/misumi/manufacturers` - `/misumi/manufacturers/search` - `/misumi/products` - `/misumi/products/reviews` - `/misumi/products/search` - `/misumi/products/similar` - `/misumi/products/variants` **NHK** - `/nhk/articles` - `/nhk/articles/playlists` - `/nhk/articles/search` - `/nhk/playlists` - `/nhk/topics/search` **NPR** - `/npr/articles` - `/npr/articles/search` - `/npr/articles/transcripts` - `/npr/authors` - `/npr/authors/articles` - `/npr/podcasts` - `/npr/podcasts/episodes` - `/npr/programs` - `/npr/programs/episodes` **Sofmap** - `/sofmap/categories` - `/sofmap/products` - `/sofmap/products/facets` - `/sofmap/products/ranking` - `/sofmap/products/reviews` - `/sofmap/products/search` - `/sofmap/stores` - `/sofmap/used_products` - `/sofmap/used_products/categories` - `/sofmap/used_products/facets` - `/sofmap/used_products/search` **Suruga-ya** - `/surugaya/categories` - `/surugaya/products` - `/surugaya/products/offers` - `/surugaya/products/search` **TechCrunch** - `/techcrunch/articles` - `/techcrunch/articles/search` - `/techcrunch/authors` - `/techcrunch/categories/search` - `/techcrunch/images` - `/techcrunch/tags/search` **The Guardian** - `/guardian/articles` - `/guardian/articles/comments` - `/guardian/articles/updates` - `/guardian/authors` - `/guardian/authors/search` - `/guardian/feeds` - `/guardian/tags/articles` - `/guardian/tags/search` **Yomiuri Shimbun** - `/yomiuri/articles` - `/yomiuri/articles/search` - `/yomiuri/categories/articles` - `/yomiuri/tags/articles` **Yonhap News** - `/yonhap/articles` - `/yonhap/articles/rankings` - `/yonhap/articles/reactions` - `/yonhap/articles/search` - `/yonhap/authors` - `/yonhap/authors/articles` - `/yonhap/authors/search` - `/yonhap/categories/articles` - `/yonhap/categories/graphics` - `/yonhap/categories/photos` - `/yonhap/categories/videos` - `/yonhap/feeds` - `/yonhap/issues` - `/yonhap/issues/articles` - `/yonhap/issues/search` - `/yonhap/photos` **Zenn** - `/zenn/articles` - `/zenn/articles/search` - `/zenn/books` - `/zenn/books/chapters` - `/zenn/books/search` - `/zenn/publications` - `/zenn/publications/articles` - `/zenn/publications/search` - `/zenn/scraps` - `/zenn/scraps/search` - `/zenn/topics` - `/zenn/topics/articles` - `/zenn/topics/search` - `/zenn/users` - `/zenn/users/articles` - `/zenn/users/books` - `/zenn/users/comments` - `/zenn/users/scraps` - `/zenn/users/search` **Revolve** - `/revolve/brands/products` - `/revolve/brands/search` - `/revolve/categories` - `/revolve/categories/products` - `/revolve/products` - `/revolve/products/filters` - `/revolve/products/related` - `/revolve/products/reviews` - `/revolve/products/reviews/summary` - `/revolve/products/search` **5ch** - `/fivech/boards` - `/fivech/boards/archive` - `/fivech/boards/search` - `/fivech/boards/threads` - `/fivech/headlines` - `/fivech/threads` - `/fivech/threads/posts` - `/fivech/threads/search` - `/fivech/threads/trending` **Centaline** - `/centaline/agents/search` - `/centaline/branches/search` - `/centaline/carparks/search` - `/centaline/commercial/agents/search` - `/centaline/commercial/buildings/search` - `/centaline/commercial/properties/search` - `/centaline/commercial/transactions/search` - `/centaline/estates` - `/centaline/estates/search` - `/centaline/estates/transactions` - `/centaline/estates/units` - `/centaline/indices` - `/centaline/new_properties/search` - `/centaline/properties` - `/centaline/properties/search` - `/centaline/transactions/search` - `/centaline/transactions/statistics` - `/centaline/valuations` **HK01** - `/hk01/articles` - `/hk01/articles/hot` - `/hk01/articles/latest` - `/hk01/articles/search` - `/hk01/categories/articles` - `/hk01/coupons/search` - `/hk01/issues` - `/hk01/issues/articles` - `/hk01/issues/search` - `/hk01/tags` - `/hk01/tags/articles` - `/hk01/tags/hot` - `/hk01/videos/latest` - `/hk01/zones` - `/hk01/zones/articles` **Hse28** - `/hse28/estates` - `/hse28/estates/search` - `/hse28/estates/transactions` - `/hse28/estates/units` - `/hse28/indices` - `/hse28/properties` - `/hse28/properties/search` - `/hse28/transactions/search` **Midland Realty** - `/midland/commercial/properties` - `/midland/commercial/properties/search` - `/midland/estates` - `/midland/estates/search` - `/midland/indices` - `/midland/properties` - `/midland/properties/search` - `/midland/transactions` - `/midland/transactions/search` **MonotaRO** - `/monotaro/categories` - `/monotaro/products` - `/monotaro/products/reviews` - `/monotaro/products/search` - `/monotaro/products/variants` **OpenRice** - `/openrice/coupons/search` - `/openrice/facets` - `/openrice/landmarks` - `/openrice/landmarks/restaurants` - `/openrice/restaurants` - `/openrice/restaurants/chart` - `/openrice/restaurants/menu` - `/openrice/restaurants/photos` - `/openrice/restaurants/reviews` - `/openrice/restaurants/search` - `/openrice/users` - `/openrice/users/reviews` **PayPay Flea Market** - `/paypayfleamarket/brands` - `/paypayfleamarket/brands/search` - `/paypayfleamarket/categories` - `/paypayfleamarket/items` - `/paypayfleamarket/items/search` - `/paypayfleamarket/products` - `/paypayfleamarket/products/search` - `/paypayfleamarket/users` - `/paypayfleamarket/users/items` - `/paypayfleamarket/users/reviews` **Qiita** - `/qiita/articles` - `/qiita/articles/comments` - `/qiita/articles/likes` - `/qiita/articles/search` - `/qiita/articles/stockers` - `/qiita/organizations` - `/qiita/organizations/articles` - `/qiita/organizations/members` - `/qiita/organizations/search` - `/qiita/questions` - `/qiita/questions/search` - `/qiita/tags` - `/qiita/tags/articles` - `/qiita/tags/search` - `/qiita/users` - `/qiita/users/articles` - `/qiita/users/followees` - `/qiita/users/followers` - `/qiita/users/following_tags` - `/qiita/users/search` **Rakuma** - `/rakuma/brands` - `/rakuma/brands/items` - `/rakuma/categories` - `/rakuma/categories/items` - `/rakuma/items` - `/rakuma/items/comments` - `/rakuma/items/search` - `/rakuma/sizes` - `/rakuma/users` - `/rakuma/users/items` - `/rakuma/users/reviews` **Yodobashi** - `/yodobashi/categories` - `/yodobashi/makers` - `/yodobashi/products` - `/yodobashi/products/questions` - `/yodobashi/products/ranking` - `/yodobashi/products/related` - `/yodobashi/products/reviews` - `/yodobashi/products/search` - `/yodobashi/products/stock` **Improved stability & reliability:** ArtStation, CareerBuilder, Goo-net, Letterboxd, LinkedIn, noon, OpenSea, OpenSecrets, SeLoger, Skyscanner, Startpage, Utah **Yelp** - `/yelp/businesses` - `/yelp/businesses/photos` - `/yelp/businesses/reviews` - `/yelp/businesses/search` **Improved stability & reliability:** Bayt, Expedia, FIPS (Rospatent), Gartner, GetYourGuide, Indiegogo, Naukri, Ollama, RateMDs, Rikunabi, SUUMO, TrustRadius, Yahoo **SafariBookings** - `/safaribookings/countries` - `/safaribookings/destinations/search` - `/safaribookings/operators` - `/safaribookings/operators/reviews` - `/safaribookings/operators/search` - `/safaribookings/operators/tours` - `/safaribookings/parks` - `/safaribookings/parks/reviews` - `/safaribookings/reviews/search` - `/safaribookings/search/search` - `/safaribookings/tours` - `/safaribookings/tours/days` - `/safaribookings/tours/rates` - `/safaribookings/tours/search` **Chrono24** - `/chrono24/brands` - `/chrono24/dealers` - `/chrono24/dealers/reviews` - `/chrono24/watches` - `/chrono24/watches/search` **DHgate** - `/dhgate/products` - `/dhgate/products/search` - `/dhgate/stores` - `/dhgate/stores/products` - `/dhgate/stores/reviews` **Faire** - `/faire/brands` - `/faire/brands/products` - `/faire/brands/reviews` - `/faire/brands/search` - `/faire/categories` - `/faire/products` - `/faire/products/search` - `/faire/products/suggestions` **Grailed** - `/grailed/designers` - `/grailed/designers/search` - `/grailed/items` - `/grailed/items/search` - `/grailed/items/similar` - `/grailed/users` - `/grailed/users/items` - `/grailed/users/reviews` **Hawaii** - `/hawaii/companies/search` **Made-in-China** - `/madeinchina/categories` - `/madeinchina/companies` - `/madeinchina/companies/products` - `/madeinchina/companies/search` - `/madeinchina/products` - `/madeinchina/products/search` **Poshmark** - `/poshmark/items` - `/poshmark/items/comments` - `/poshmark/items/likes` - `/poshmark/items/related` - `/poshmark/items/search` - `/poshmark/users` - `/poshmark/users/followers` - `/poshmark/users/following` - `/poshmark/users/items` - `/poshmark/users/search` **Reverb** - `/reverb/csps` - `/reverb/csps/price-guide` - `/reverb/csps/reviews` - `/reverb/csps/search` - `/reverb/items` - `/reverb/items/search` - `/reverb/shops` - `/reverb/shops/reviews` **Thomasnet** - `/thomasnet/categories` - `/thomasnet/companies` - `/thomasnet/companies/search` **Improved stability & reliability:** LinkedIn **AliExpress** - `/aliexpress/products` - `/aliexpress/products/reviews` - `/aliexpress/products/search` **Arizona** - `/arizona/companies` - `/arizona/companies/search` - `/arizona/filings/search` - `/arizona/notices/search` **Booking.com** - `/booking/destinations` - `/booking/destinations/search` - `/booking/hotels` - `/booking/hotels/reviews` - `/booking/hotels/search` **California** - `/california/companies` - `/california/companies/disclosures` - `/california/companies/filings` - `/california/companies/search` **Connecticut** - `/connecticut/companies` - `/connecticut/companies/search` **CoStar** - `/costar/articles` - `/costar/articles/search` - `/costar/authors` - `/costar/authors/articles` **District of Columbia** - `/dc/companies` - `/dc/companies/agents` - `/dc/companies/names` - `/dc/companies/search` **Tracxn** - `/tracxn/companies` - `/tracxn/companies/funding` - `/tracxn/companies/search` - `/tracxn/geographies` - `/tracxn/investors` - `/tracxn/legal_entities` - `/tracxn/legal_entities/search` - `/tracxn/people` - `/tracxn/sectors` - `/tracxn/unicorns/search` **Behance** - `/behance/assets/search` - `/behance/jobs` - `/behance/jobs/search` - `/behance/projects` - `/behance/projects/comments` - `/behance/projects/search` - `/behance/users` - `/behance/users/appreciations` - `/behance/users/followers` - `/behance/users/following` - `/behance/users/projects` - `/behance/users/search` - `/behance/users/services` **Craigslist** - `/craigslist/areas` - `/craigslist/categories` - `/craigslist/postings` - `/craigslist/postings/counts` - `/craigslist/postings/search` - `/craigslist/postings/seller` **Crexi** - `/crexi/brokers` - `/crexi/properties` - `/crexi/properties/brokers` - `/crexi/properties/climate` - `/crexi/properties/gallery` - `/crexi/properties/search` - `/crexi/properties/similar` - `/crexi/properties/stats` - `/crexi/spaces/search` **Dribbble** - `/dribbble/jobs` - `/dribbble/jobs/search` - `/dribbble/services/search` - `/dribbble/shots` - `/dribbble/shots/search` - `/dribbble/users` - `/dribbble/users/search` - `/dribbble/users/services` - `/dribbble/users/shots` **Fiverr** - `/fiverr/categories` - `/fiverr/categories/gigs` - `/fiverr/gigs` - `/fiverr/gigs/reviews` - `/fiverr/gigs/search` - `/fiverr/gigs/similar` - `/fiverr/sellers` - `/fiverr/sellers/gigs` - `/fiverr/sellers/portfolio` - `/fiverr/sellers/reviews` **Freelancer** - `/freelancer/contests` - `/freelancer/contests/entries` - `/freelancer/contests/search` - `/freelancer/projects` - `/freelancer/projects/archive` - `/freelancer/projects/search` - `/freelancer/users` - `/freelancer/users/portfolios` - `/freelancer/users/reviews` - `/freelancer/users/search` **Gumtree** - `/gumtree/categories` - `/gumtree/listings` - `/gumtree/listings/search` - `/gumtree/listings/similar` - `/gumtree/sellers` - `/gumtree/sellers/listings` **Immowelt** - `/immowelt/agencies` - `/immowelt/agencies/properties` - `/immowelt/places` - `/immowelt/places/search` - `/immowelt/prices` - `/immowelt/properties` - `/immowelt/properties/search` **Kijiji** - `/kijiji/categories` - `/kijiji/listings` - `/kijiji/listings/filters` - `/kijiji/listings/search` - `/kijiji/listings/similar` - `/kijiji/locations` - `/kijiji/sellers` - `/kijiji/sellers/listings` - `/kijiji/sellers/reviews` **Leboncoin** - `/leboncoin/categories` - `/leboncoin/listings` - `/leboncoin/listings/similar` - `/leboncoin/locations/search` - `/leboncoin/sellers` - `/leboncoin/sellers/reviews` - `/leboncoin/sellers/search` **Marktplaats** - `/marktplaats/categories` - `/marktplaats/listings` - `/marktplaats/listings/search` - `/marktplaats/sellers` - `/marktplaats/sellers/listings` - `/marktplaats/sellers/reviews` **OLX** - `/olx/categories` - `/olx/categories/filters` - `/olx/offers` - `/olx/offers/search` - `/olx/regions` - `/olx/users` - `/olx/users/offers` **OnTheMarket** - `/onthemarket/agents` - `/onthemarket/agents/local` - `/onthemarket/agents/properties` - `/onthemarket/agents/search` - `/onthemarket/locations/search` - `/onthemarket/overseas/search` - `/onthemarket/prices` - `/onthemarket/prices/search` - `/onthemarket/properties` - `/onthemarket/properties/search` - `/onthemarket/properties/similar` **Realtor.ca** - `/realtorca/agents` - `/realtorca/agents/properties` - `/realtorca/agents/search` - `/realtorca/locations/search` - `/realtorca/markets` - `/realtorca/offices` - `/realtorca/offices/agents` - `/realtorca/offices/properties` - `/realtorca/offices/search` - `/realtorca/properties` - `/realtorca/properties/history` - `/realtorca/properties/open_houses` - `/realtorca/properties/search` - `/realtorca/properties/similar` **USAJOBS** - `/usajobs/agencies/search` - `/usajobs/events` - `/usajobs/events/jobs` - `/usajobs/events/search` - `/usajobs/jobs` - `/usajobs/jobs/facets` - `/usajobs/jobs/search` **XING** - `/xing/companies` - `/xing/companies/employees` - `/xing/companies/jobs` - `/xing/companies/locations` - `/xing/companies/posts` - `/xing/companies/search` - `/xing/jobs` - `/xing/jobs/search` - `/xing/users` - `/xing/users/similar` **Yahoo** - `/yahoo/auctions/categories` - `/yahoo/auctions/items` - `/yahoo/auctions/items/closed/search` - `/yahoo/auctions/items/search` - `/yahoo/auctions/products` - `/yahoo/auctions/sellers` - `/yahoo/auctions/sellers/items` - `/yahoo/auctions/sellers/reviews` - `/yahoo/auctions/sellers/reviews/summary` **Improved stability & reliability:** LinkedIn **Apartment List** - `/apartmentlist/listings` - `/apartmentlist/listings/reviews` - `/apartmentlist/listings/search` - `/apartmentlist/listings/similar` - `/apartmentlist/locations` - `/apartmentlist/locations/neighborhoods` - `/apartmentlist/locations/search` **Back Market** - `/backmarket/categories` - `/backmarket/products` - `/backmarket/products/offers` - `/backmarket/products/search` **Compass** - `/compass/agents` - `/compass/agents/search` - `/compass/listings` - `/compass/listings/history` - `/compass/listings/search` - `/compass/locations/search` **Despegar** - `/despegar/hotels/search` - `/despegar/places/search` **Falabella** - `/falabella/categories` - `/falabella/products` - `/falabella/products/reviews` - `/falabella/products/reviews/summary` - `/falabella/products/search` - `/falabella/products/similar` - `/falabella/products/stores` - `/falabella/sellers/products` **Gmarket** - `/gmarket/products` - `/gmarket/products/best` - `/gmarket/products/questions` - `/gmarket/products/reviews` - `/gmarket/sellers` - `/gmarket/sellers/items` **GOG** - `/gog/products` - `/gog/products/prices` - `/gog/products/reviews` - `/gog/products/search` **Hopper** - `/hopper/flights/prices` - `/hopper/flights/search` - `/hopper/hotels` - `/hopper/hotels/rooms` - `/hopper/hotels/search` - `/hopper/locations/search` **HotPads** - `/hotpads/buildings` - `/hotpads/listings` - `/hotpads/listings/search` **IsThereAnyDeal** - `/isthereanydeal/bundles` - `/isthereanydeal/games` - `/isthereanydeal/games/history` - `/isthereanydeal/games/regions` - `/isthereanydeal/games/screenshots` - `/isthereanydeal/games/search` - `/isthereanydeal/games/similar` - `/isthereanydeal/games/stats` - `/isthereanydeal/games/streams` - `/isthereanydeal/subscriptions` **JD.com** - `/jd/shops` **Jumia** - `/jumia/categories` - `/jumia/products` - `/jumia/products/reviews` - `/jumia/products/search` - `/jumia/sellers` **Kick** - `/kick/categories` - `/kick/categories/list` - `/kick/categories/search` - `/kick/channels` - `/kick/channels/clips` - `/kick/channels/leaderboards` - `/kick/channels/livestream` - `/kick/channels/search` - `/kick/channels/videos` - `/kick/clips` - `/kick/streams/featured` - `/kick/streams/search` - `/kick/videos` **Magazine Luiza** - `/magazineluiza/products` - `/magazineluiza/products/reviews` - `/magazineluiza/products/search` **MakeMyTrip** - `/makemytrip/places/search` **Momondo** - `/momondo/cars/search` - `/momondo/flights/search` - `/momondo/places/search` - `/momondo/stays/search` **Namshi** - `/namshi/brands` - `/namshi/categories/products` - `/namshi/products` - `/namshi/products/search` **Nextdoor** - `/nextdoor/businesses` - `/nextdoor/businesses/search` - `/nextdoor/cities` - `/nextdoor/neighborhoods` - `/nextdoor/neighborhoods/directory` - `/nextdoor/neighborhoods/rankings` - `/nextdoor/topics` **noon** - `/noon/categories/products` - `/noon/products` - `/noon/products/offers` - `/noon/products/search` - `/noon/products/suggestions` - `/noon/sellers` - `/noon/sellers/products` - `/noon/sellers/reviews` **Omio** - `/omio/companies` - `/omio/journeys/prices` - `/omio/journeys/search` - `/omio/positions/search` - `/omio/routes` - `/omio/routes/reviews` - `/omio/stations` **Open-Meteo** - `/openmeteo/air_quality` - `/openmeteo/archive` - `/openmeteo/elevation` - `/openmeteo/flood` - `/openmeteo/forecast` - `/openmeteo/locations` - `/openmeteo/locations/search` - `/openmeteo/marine` **OpenWeatherMap** - `/openweathermap/forecast/hourly` - `/openweathermap/weather` - `/openweathermap/weather/alerts` **Pap** - `/pap/listings` - `/pap/listings/search` - `/pap/locations/search` **Qoo10** - `/qoo10/products` - `/qoo10/products/reviews` - `/qoo10/products/search` - `/qoo10/sellers` - `/qoo10/sellers/items` **Rome2Rio** - `/rome2rio/places/search` - `/rome2rio/routes/search` **Takealot** - `/takealot/departments` - `/takealot/products` - `/takealot/products/reviews` - `/takealot/products/search` **Tokopedia** - `/tokopedia/categories` - `/tokopedia/products` - `/tokopedia/products/rating` - `/tokopedia/products/reviews` - `/tokopedia/products/search` - `/tokopedia/shops` - `/tokopedia/shops/products` - `/tokopedia/shops/search` **Trivago** - `/trivago/advertisers` - `/trivago/deals/search` - `/trivago/destinations` - `/trivago/destinations/forecast` - `/trivago/destinations/search` - `/trivago/hotels` - `/trivago/hotels/search` **Wildberries** - `/wildberries/categories` - `/wildberries/products` - `/wildberries/products/questions` - `/wildberries/products/reviews` - `/wildberries/products/search` - `/wildberries/products/similar` - `/wildberries/sellers` **Yahoo** - `/yahoo/realestate/buildings` - `/yahoo/realestate/buildings/search` - `/yahoo/realestate/listings` - `/yahoo/realestate/listings/search` - `/yahoo/realestate/projects` - `/yahoo/realestate/projects/search` - `/yahoo/realestate/properties` - `/yahoo/realestate/realtors` - `/yahoo/realestate/realtors/search` **Improved stability & reliability:** Al Jazeera, Amazon, AppBrain, AutoScout24, Avito, Avvo, Bayt, BBB, BetaList, Bilibili, Bing, Blibli, Blur, CareerBuilder, CarGurus, CMS Open Payments, Coolblue, CORE, DeBank, DoorDash, Douyin, Dune Analytics, eBay, European Central Bank (ECB), Eventbrite, Expato, Expedia, F-Droid, Fotocasa, GetApp, Glassdoor, Go Packages, GoFundMe, GoodRx, Google, Grubhub, Gurunavi, Handelsregister, Hawaii, HeadHunter, Healthgrades, Hostelworld, Hot Pepper, Indeed, Indie Hackers, Indiegogo, InHerSight, Instagram, Interfax, Jalan, Japan Exchange (JPX), Justia, Kakaku, Kalshi, Kickstarter, Kinopoisk, KIPRIS (Korea), Kleinanzeigen, Kommersant, kununu, Letterboxd, LIFULL, LinkedIn, List-Org, Maven Central, MOEX (Moscow Exchange), MTicket, Nash Vancouver, Naukri, New Hampshire, NHS, Ollama, OpenSea, ORCID, Packagist, Patreon, Pets Place, Pracuj.pl, Property Finder, Quora, RateMDs, Redfin, Replicate, Russian Emirates, Saramin, Seedrs, Showman, Snapshot, Software Advice, SourceForge, SteamDB, StepStone, SuperJob, Tabelog, Techmeme, Ticketmaster, Totaljobs, Trade Me, Trip.com, Twitter / X, USPTO Trademarks, VesselFinder, Vitals, Walmart, Web Parser, Wefunder, Yahoo Shopping, Yell, Yellow Pages, YOLO, YouTube, Za Chestnyi Biznes, Zauba, Zhaopin **Avito** - `/avito/categories` - `/avito/items` - `/avito/items/search` - `/avito/sellers` - `/avito/sellers/items` **Google** - `/google/maps/posts` **Improved stability & reliability:** LinkedIn **AlienVault OTX** - `/alienvault_otx/adversaries/search` - `/alienvault_otx/files/analysis` - `/alienvault_otx/groups/search` - `/alienvault_otx/indicators` - `/alienvault_otx/indicators/http_scans` - `/alienvault_otx/indicators/malware` - `/alienvault_otx/indicators/passive_dns` - `/alienvault_otx/indicators/search` - `/alienvault_otx/indicators/url_list` - `/alienvault_otx/indicators/whois` - `/alienvault_otx/industries` - `/alienvault_otx/malware/search` - `/alienvault_otx/pulses` - `/alienvault_otx/pulses/comments` - `/alienvault_otx/pulses/history` - `/alienvault_otx/pulses/indicators` - `/alienvault_otx/pulses/related` - `/alienvault_otx/pulses/search` - `/alienvault_otx/pulses/threat_summary` - `/alienvault_otx/users` - `/alienvault_otx/users/search` **ArtStation** - `/artstation/channels` - `/artstation/channels/projects` - `/artstation/jobs` - `/artstation/jobs/search` - `/artstation/marketplace/products` - `/artstation/projects` - `/artstation/projects/comments` - `/artstation/projects/reactions` - `/artstation/projects/search` - `/artstation/studios` - `/artstation/studios/search` - `/artstation/users` - `/artstation/users/followers` - `/artstation/users/following` - `/artstation/users/likes` - `/artstation/users/projects` - `/artstation/users/search` **bgp.tools** - `/bgptools/asns` - `/bgptools/asns/connectivity` - `/bgptools/asns/ixs` - `/bgptools/asns/prefixes` - `/bgptools/asns/whois` - `/bgptools/ips` - `/bgptools/ixs` - `/bgptools/ixs/members` - `/bgptools/prefixes` - `/bgptools/prefixes/connectivity` - `/bgptools/prefixes/dns` - `/bgptools/prefixes/validation` - `/bgptools/search` - `/bgptools/tags` **DeviantArt** - `/deviantart/deviations` - `/deviantart/deviations/comments` - `/deviantart/deviations/daily` - `/deviantart/deviations/search` - `/deviantart/tags` - `/deviantart/users` - `/deviantart/users/badges` - `/deviantart/users/comments` - `/deviantart/users/favourites` - `/deviantart/users/gallery` - `/deviantart/users/gallery/folders` - `/deviantart/users/groups` - `/deviantart/users/posts` - `/deviantart/users/watchers` - `/deviantart/users/watching` **Eventbrite** - `/eventbrite/events` - `/eventbrite/events/search` - `/eventbrite/events/tickets` - `/eventbrite/organizers` - `/eventbrite/organizers/events` **FlightAware** - `/flightaware/aircraft` - `/flightaware/aircraft_types/flights` - `/flightaware/airports` - `/flightaware/airports/arrivals` - `/flightaware/airports/departures` - `/flightaware/airports/enroute` - `/flightaware/airports/scheduled` - `/flightaware/delays` - `/flightaware/flights` - `/flightaware/flights/history` - `/flightaware/flights/search` - `/flightaware/flights/track` - `/flightaware/operators/flights` **Flightradar24** - `/flightradar24/aircraft` - `/flightradar24/aircraft/flights` - `/flightradar24/airlines` - `/flightradar24/airlines/fleet` - `/flightradar24/airports` - `/flightradar24/airports/routes` - `/flightradar24/airports/schedule` - `/flightradar24/airports/weather` - `/flightradar24/flights` - `/flightradar24/flights/history` - `/flightradar24/flights/search` - `/flightradar24/search` **Goodreads** - `/goodreads/authors` - `/goodreads/authors/books` - `/goodreads/authors/quotes` - `/goodreads/books` - `/goodreads/books/editions` - `/goodreads/books/quotes` - `/goodreads/books/reviews` - `/goodreads/books/search` - `/goodreads/books/similar` - `/goodreads/genres` - `/goodreads/genres/books` - `/goodreads/lists` - `/goodreads/series` **GreyNoise** - `/greynoise/ips` **Have I Been Pwned** - `/haveibeenpwned/breaches` - `/haveibeenpwned/breaches/latest` - `/haveibeenpwned/breaches/search` - `/haveibeenpwned/data_classes` - `/haveibeenpwned/passwords` **Healthgrades** - `/healthgrades/facilities` - `/healthgrades/facilities/search` - `/healthgrades/hospitals` - `/healthgrades/hospitals/search` - `/healthgrades/providers` - `/healthgrades/providers/reviews` - `/healthgrades/providers/search` - `/healthgrades/specialties` **IMDb** - `/imdb/charts` - `/imdb/charts/box-office` - `/imdb/names` - `/imdb/names/search` - `/imdb/titles` - `/imdb/titles/awards` - `/imdb/titles/credits` - `/imdb/titles/episodes` - `/imdb/titles/release-info` - `/imdb/titles/reviews` - `/imdb/titles/search` **Letterboxd** - `/letterboxd/contributors` - `/letterboxd/films` - `/letterboxd/films/browse` - `/letterboxd/films/lists` - `/letterboxd/films/members` - `/letterboxd/films/reviews` - `/letterboxd/films/search` - `/letterboxd/films/similar` - `/letterboxd/lists` - `/letterboxd/lists/search` - `/letterboxd/search` - `/letterboxd/users` - `/letterboxd/users/diary` - `/letterboxd/users/films` - `/letterboxd/users/followers` - `/letterboxd/users/following` - `/letterboxd/users/likes` - `/letterboxd/users/lists` - `/letterboxd/users/reviews` - `/letterboxd/users/search` - `/letterboxd/users/tags` - `/letterboxd/users/watchlist` **LinkedIn** - `/linkedin/public/user` **MarineTraffic** - `/marinetraffic/companies` - `/marinetraffic/companies/search` - `/marinetraffic/ports` - `/marinetraffic/vessels` **Meetup** - `/meetup/cities` - `/meetup/events` - `/meetup/events/search` - `/meetup/groups` - `/meetup/groups/events` - `/meetup/groups/search` - `/meetup/topics` **MusicBrainz** - `/musicbrainz/areas` - `/musicbrainz/areas/search` - `/musicbrainz/artists` - `/musicbrainz/artists/recordings` - `/musicbrainz/artists/release-groups` - `/musicbrainz/artists/releases` - `/musicbrainz/artists/search` - `/musicbrainz/artists/works` - `/musicbrainz/events` - `/musicbrainz/events/search` - `/musicbrainz/genres` - `/musicbrainz/genres/list` - `/musicbrainz/instruments` - `/musicbrainz/instruments/search` - `/musicbrainz/labels` - `/musicbrainz/labels/releases` - `/musicbrainz/labels/search` - `/musicbrainz/places` - `/musicbrainz/places/search` - `/musicbrainz/recordings` - `/musicbrainz/recordings/by-isrc` - `/musicbrainz/recordings/search` - `/musicbrainz/release_groups` - `/musicbrainz/release_groups/releases` - `/musicbrainz/release_groups/search` - `/musicbrainz/releases` - `/musicbrainz/releases/search` - `/musicbrainz/series` - `/musicbrainz/series/search` - `/musicbrainz/works` - `/musicbrainz/works/by-iswc` - `/musicbrainz/works/search` **Patreon** - `/patreon/categories` - `/patreon/creators` - `/patreon/creators/collections` - `/patreon/creators/posts` - `/patreon/creators/products` - `/patreon/creators/search` - `/patreon/creators/tags` - `/patreon/creators/tiers` - `/patreon/posts` - `/patreon/posts/comments` **RateMDs** - `/ratemds/doctors` - `/ratemds/doctors/reviews` - `/ratemds/doctors/search` - `/ratemds/facilities` - `/ratemds/facilities/search` - `/ratemds/specialties` **Rotten Tomatoes** - `/rottentomatoes/celebrities` - `/rottentomatoes/movies` - `/rottentomatoes/movies/cast` - `/rottentomatoes/movies/search` - `/rottentomatoes/movies/similar` - `/rottentomatoes/search` - `/rottentomatoes/tv` - `/rottentomatoes/tv/cast` - `/rottentomatoes/tv/search` - `/rottentomatoes/tv/seasons` **Social Blade** - `/socialblade/facebook/pages` - `/socialblade/facebook/pages/history` - `/socialblade/facebook/pages/search` - `/socialblade/facebook/pages/top` - `/socialblade/instagram/users` - `/socialblade/instagram/users/search` - `/socialblade/instagram/users/top` - `/socialblade/tiktok/users` - `/socialblade/tiktok/users/history` - `/socialblade/tiktok/users/search` - `/socialblade/tiktok/users/top` - `/socialblade/twitch/users` - `/socialblade/twitch/users/history` - `/socialblade/twitch/users/search` - `/socialblade/twitch/users/top` - `/socialblade/youtube/channels` - `/socialblade/youtube/channels/history` - `/socialblade/youtube/channels/search` - `/socialblade/youtube/channels/top` **Spotify** - `/spotify/albums` - `/spotify/artists` - `/spotify/artists/albums` - `/spotify/artists/appears-on` - `/spotify/artists/related` - `/spotify/episodes` - `/spotify/playlists` - `/spotify/playlists/tracks` - `/spotify/search` - `/spotify/shows` - `/spotify/shows/episodes` - `/spotify/tracks` **Strava** - `/strava/clubs` - `/strava/clubs/posts` **Ticketmaster** - `/ticketmaster/attractions` - `/ticketmaster/attractions/events` - `/ticketmaster/attractions/related` - `/ticketmaster/attractions/reviews` - `/ticketmaster/events/search` - `/ticketmaster/suggestions/search` - `/ticketmaster/venues` - `/ticketmaster/venues/events` **TMDB** - `/tmdb/collections` - `/tmdb/collections/search` - `/tmdb/companies` - `/tmdb/companies/search` - `/tmdb/keywords` - `/tmdb/keywords/search` - `/tmdb/movies` - `/tmdb/movies/cast` - `/tmdb/movies/discover` - `/tmdb/movies/images` - `/tmdb/movies/releases` - `/tmdb/movies/reviews` - `/tmdb/movies/search` - `/tmdb/movies/titles` - `/tmdb/movies/videos` - `/tmdb/movies/watch` - `/tmdb/networks` - `/tmdb/networks/search` - `/tmdb/people` - `/tmdb/people/images` - `/tmdb/people/popular` - `/tmdb/people/search` - `/tmdb/tv` - `/tmdb/tv/cast` - `/tmdb/tv/discover` - `/tmdb/tv/images` - `/tmdb/tv/reviews` - `/tmdb/tv/search` - `/tmdb/tv/seasons` - `/tmdb/tv/titles` - `/tmdb/tv/videos` - `/tmdb/tv/watch` **VesselFinder** - `/vesselfinder/ports` - `/vesselfinder/ports/search` - `/vesselfinder/vessels` - `/vesselfinder/vessels/search` **Amazon** - `/amazon/appstore/apps` - `/amazon/appstore/apps/search` - `/amazon/appstore/developers/apps` **Ameblo** - `/ameblo/posts` - `/ameblo/posts/reactions` - `/ameblo/posts/search` - `/ameblo/users` - `/ameblo/users/followers` - `/ameblo/users/posts` **Anaconda** - `/anaconda/channels` - `/anaconda/channels/packages` - `/anaconda/packages` - `/anaconda/packages/files` - `/anaconda/packages/releases` - `/anaconda/packages/search` **AppBrain** - `/appbrain/apps` - `/appbrain/apps/browse` - `/appbrain/apps/ranking` **Aptoide** - `/aptoide/apps` - `/aptoide/apps/reviews` - `/aptoide/apps/search` - `/aptoide/apps/similar` - `/aptoide/apps/versions` - `/aptoide/reviews/comments` - `/aptoide/stores` **Avvo** - `/avvo/lawyers` - `/avvo/lawyers/reviews` - `/avvo/lawyers/search` - `/avvo/questions` - `/avvo/questions/search` **BetaList** - `/betalist/makers` - `/betalist/startups` - `/betalist/startups/latest` - `/betalist/startups/search` - `/betalist/startups/similar` - `/betalist/topics` - `/betalist/topics/startups` **Bitbucket** - `/bitbucket/commits` - `/bitbucket/pullrequests` - `/bitbucket/repositories` - `/bitbucket/repositories/branches` - `/bitbucket/repositories/commits` - `/bitbucket/repositories/forks` - `/bitbucket/repositories/pullrequests` - `/bitbucket/repositories/search` - `/bitbucket/users` - `/bitbucket/workspaces` **Blind** - `/blind/channels` - `/blind/channels/posts` - `/blind/companies` - `/blind/companies/posts` - `/blind/companies/reviews` - `/blind/companies/salaries` - `/blind/layoffs/search` - `/blind/posts` - `/blind/posts/comments` - `/blind/posts/search` **Civitai** - `/civitai/creators/search` - `/civitai/images/search` - `/civitai/model_versions` - `/civitai/models` - `/civitai/models/search` - `/civitai/tags/search` **Class Central** - `/classcentral/courses` - `/classcentral/courses/reviews` - `/classcentral/courses/search` - `/classcentral/institutions` - `/classcentral/providers` - `/classcentral/subjects` **Coursera** - `/coursera/courses` - `/coursera/courses/reviews` - `/coursera/courses/search` - `/coursera/courses/syllabus` - `/coursera/instructors` - `/coursera/partners` - `/coursera/specializations` **CourtListener** - `/courtlistener/courts` - `/courtlistener/courts/search` - `/courtlistener/dockets/search` - `/courtlistener/financial_disclosures` - `/courtlistener/financial_disclosures/search` - `/courtlistener/judges` - `/courtlistener/judges/search` - `/courtlistener/opinions/search` - `/courtlistener/oral_arguments` - `/courtlistener/oral_arguments/search` **CRAN** - `/cran/packages` - `/cran/packages/downloads` - `/cran/packages/search` - `/cran/packages/versions` **crates.io** - `/crates/categories` - `/crates/keywords` - `/crates/packages` - `/crates/packages/dependencies` - `/crates/packages/dependents` - `/crates/packages/downloads` - `/crates/packages/owners` - `/crates/packages/search` - `/crates/packages/versions` - `/crates/summary` **Dailymotion** - `/dailymotion/channels` - `/dailymotion/channels/search` - `/dailymotion/channels/videos` - `/dailymotion/collections` - `/dailymotion/collections/videos` - `/dailymotion/videos` - `/dailymotion/videos/search` - `/dailymotion/videos/subtitles` **edX** - `/edx/courses` - `/edx/courses/search` - `/edx/programs` - `/edx/programs/search` - `/edx/schools` **F-Droid** - `/fdroid/apps` - `/fdroid/apps/search` - `/fdroid/apps/versions` **FINRA** - `/finra/firms` - `/finra/firms/search` - `/finra/individuals` - `/finra/individuals/search` **GetApp** - `/getapp/categories` - `/getapp/categories/products` - `/getapp/products` - `/getapp/products/alternatives` - `/getapp/products/reviews` - `/getapp/products/search` **Go Packages** - `/golang/packages` - `/golang/packages/importers` - `/golang/packages/imports` - `/golang/packages/recent` - `/golang/packages/search` - `/golang/packages/versions` **GoFundMe** - `/gofundme/campaigns` - `/gofundme/campaigns/donations` - `/gofundme/campaigns/search` **Homebrew** - `/homebrew/analytics/installs` - `/homebrew/casks` - `/homebrew/casks/search` - `/homebrew/formulae` - `/homebrew/formulae/search` **IAPD** - `/iapd/advisers` - `/iapd/advisers/search` - `/iapd/firms` - `/iapd/firms/search` **Indie Hackers** - `/indiehackers/ideas/search` - `/indiehackers/jobs/search` - `/indiehackers/posts` - `/indiehackers/posts/search` - `/indiehackers/products` - `/indiehackers/products/search` - `/indiehackers/users` - `/indiehackers/users/search` **Indiegogo** - `/indiegogo/campaigns` - `/indiegogo/campaigns/perks` - `/indiegogo/campaigns/search` **Influenster** - `/influenster/brands` - `/influenster/brands/products` - `/influenster/brands/search` - `/influenster/products` - `/influenster/products/media` - `/influenster/products/reviews` - `/influenster/products/search` **InHerSight** - `/inhersight/companies` - `/inhersight/companies/benefits` - `/inhersight/companies/jobs` - `/inhersight/companies/questions` - `/inhersight/companies/reviews` - `/inhersight/companies/scores` - `/inhersight/companies/search` - `/inhersight/jobs` - `/inhersight/jobs/search` **Justia** - `/justia/lawyers` - `/justia/lawyers/search` - `/justia/opinions` **Kickstarter** - `/kickstarter/categories` - `/kickstarter/projects` - `/kickstarter/projects/comments` - `/kickstarter/projects/rewards` - `/kickstarter/projects/search` - `/kickstarter/projects/updates` **Maven Central** - `/maven/artifacts` - `/maven/artifacts/dependencies` - `/maven/artifacts/search` - `/maven/artifacts/versions` **ModelScope** - `/modelscope/datasets` - `/modelscope/datasets/files` - `/modelscope/datasets/search` - `/modelscope/models` - `/modelscope/models/files` - `/modelscope/models/revisions` - `/modelscope/models/search` - `/modelscope/studios/search` **Naver** - `/naver/blog/posts` - `/naver/blog/posts/search` - `/naver/news/articles` - `/naver/news/articles/comments` - `/naver/news/articles/search` - `/naver/place/places` - `/naver/place/places/search` **Niconico** - `/niconico/channels/search` - `/niconico/series` - `/niconico/series/search` - `/niconico/users` - `/niconico/users/videos` - `/niconico/videos` - `/niconico/videos/comments` - `/niconico/videos/ranking` - `/niconico/videos/search` **NPI Registry** - `/npi/providers` - `/npi/providers/search` **NuGet** - `/nuget/packages` - `/nuget/packages/autocomplete` - `/nuget/packages/dependencies` - `/nuget/packages/search` - `/nuget/packages/versions` - `/nuget/packages/vulnerabilities` **Ollama** - `/ollama/models` - `/ollama/models/search` - `/ollama/models/tags` **openFDA** - `/openfda/device/clearances` - `/openfda/device/clearances/search` - `/openfda/device/events` - `/openfda/device/events/search` - `/openfda/device/udi` - `/openfda/device/udi/search` - `/openfda/drug/approvals` - `/openfda/drug/approvals/search` - `/openfda/drug/enforcement` - `/openfda/drug/enforcement/search` - `/openfda/drug/events` - `/openfda/drug/events/search` - `/openfda/drug/labels` - `/openfda/drug/labels/search` - `/openfda/drug/ndc` - `/openfda/drug/ndc/search` **OpenStreetMap** - `/osm/elements` - `/osm/geocode/lookup` - `/osm/geocode/reverse` - `/osm/geocode/search` - `/osm/places/search` **Packagist** - `/packagist/packages` - `/packagist/packages/advisories` - `/packagist/packages/downloads` - `/packagist/packages/list` - `/packagist/packages/popular` - `/packagist/packages/search` - `/packagist/packages/versions` **Replicate** - `/replicate/collections` - `/replicate/collections/search` - `/replicate/models` - `/replicate/models/examples` - `/replicate/models/search` - `/replicate/models/versions` **Samsung Galaxy Store** - `/samsunggalaxy/apps` - `/samsunggalaxy/apps/reviews` - `/samsunggalaxy/apps/search` - `/samsunggalaxy/apps/similar` - `/samsunggalaxy/apps/suggest` **SEDAR+** - `/sedar/issuers` - `/sedar/issuers/search` **Seedrs** - `/seedrs/businesses` - `/seedrs/businesses/search` - `/seedrs/campaigns` - `/seedrs/campaigns/search` - `/seedrs/campaigns/upcoming` **Software Advice** - `/softwareadvice/categories` - `/softwareadvice/products` - `/softwareadvice/products/alternatives` - `/softwareadvice/products/reviews` - `/softwareadvice/products/search` **SourceForge** - `/sourceforge/projects` - `/sourceforge/projects/downloads` - `/sourceforge/projects/files` - `/sourceforge/projects/reviews` - `/sourceforge/projects/search` - `/sourceforge/projects/tickets` - `/sourceforge/users` **Udemy** - `/udemy/courses` - `/udemy/courses/curriculum` - `/udemy/courses/reviews` - `/udemy/courses/search` - `/udemy/instructors` **Vimeo** - `/vimeo/categories` - `/vimeo/categories/videos` - `/vimeo/channels` - `/vimeo/channels/search` - `/vimeo/channels/videos` - `/vimeo/users` - `/vimeo/users/search` - `/vimeo/users/videos` - `/vimeo/videos` - `/vimeo/videos/comments` - `/vimeo/videos/likes` - `/vimeo/videos/search` - `/vimeo/videos/subtitles` **VK** - `/vk/groups` - `/vk/groups/posts` - `/vk/groups/search` - `/vk/posts/comments` - `/vk/users` - `/vk/users/friends` - `/vk/users/posts` - `/vk/users/search` - `/vk/videos` - `/vk/videos/search` **Wefunder** - `/wefunder/companies` - `/wefunder/companies/posts` - `/wefunder/companies/search` **Afisha Boston** - `/afishaboston/events` - `/afishaboston/events/search` **Afisha.fi** - `/afishafi/events` - `/afishafi/events/search` **Art Georgia** - `/artgeorgia/events` - `/artgeorgia/events/search` **Bilety** - `/bilety/events` - `/bilety/events/search` **Events.ge** - `/eventsge/events` - `/eventsge/events/search` **Expato** - `/expato/events` - `/expato/events/search` **Nash Vancouver** - `/nashvancouver/events` - `/nashvancouver/events/search` **Russian Emirates** - `/russianemirates/events` - `/russianemirates/events/search` **Showman** - `/showman/events` - `/showman/events/search` **YOLO** - `/yolo/events` - `/yolo/events/search` **Improved stability & reliability:** CareerBuilder, ClinicalTrials.gov, Crossref, Discogs, Indeed, KIPRIS (Korea), Levels.fyi, LinkedIn, PATENTSCOPE, PubMed **Bilibili** - `/bilibili/users` - `/bilibili/users/dynamics` - `/bilibili/users/videos` - `/bilibili/videos` - `/bilibili/videos/popular` - `/bilibili/videos/ranking` - `/bilibili/videos/related` - `/bilibili/videos/search` **Douyin** - `/douyin/hot` - `/douyin/users` - `/douyin/videos` - `/douyin/videos/comments` - `/douyin/videos/comments/replies` **WeChat** - `/wechat/accounts/search` - `/wechat/articles` - `/wechat/articles/search` **Weibo** - `/weibo/statuses` - `/weibo/statuses/comments` - `/weibo/statuses/search` - `/weibo/trends` - `/weibo/users` - `/weibo/users/search` - `/weibo/users/statuses` **Xiaohongshu (RED)** - `/xiaohongshu/notes` - `/xiaohongshu/users` **Improved stability & reliability:** CarSensor, LinkedIn, Mynavi, Swiggy, Walmart **Adzuna** - `/adzuna/jobs` - `/adzuna/jobs/search` - `/adzuna/jobs/similar` - `/adzuna/salaries` **Afisha London** - `/afishalondon/events` - `/afishalondon/events/search` **Afisha Mira** - `/afishamira/events` - `/afishamira/events/search` **Bayt** - `/bayt/companies` - `/bayt/companies/jobs` - `/bayt/companies/search` - `/bayt/jobs` - `/bayt/jobs/search` - `/bayt/jobs/similar` - `/bayt/people/search` - `/bayt/salaries/search` **BazarClub** - `/bazarclub/events` - `/bazarclub/events/search` **Bluesky** - `/bluesky/posts` - `/bluesky/posts/replies` - `/bluesky/posts/search` - `/bluesky/users` - `/bluesky/users/followers` - `/bluesky/users/follows` - `/bluesky/users/posts` - `/bluesky/users/search` **CareerBuilder** - `/careerbuilder/companies/jobs` - `/careerbuilder/jobs` - `/careerbuilder/jobs/search` - `/careerbuilder/jobs/similar` - `/careerbuilder/salaries` **Cyprus Butterfly** - `/cyprusbutterfly/events` - `/cyprusbutterfly/events/search` **Cyprus.bz** - `/cyprusbz/events` - `/cyprusbz/events/search` **Discord** - `/discord/guilds` - `/discord/guilds/search` - `/discord/guilds/widget` - `/discord/invites` **EventCartel** - `/eventcartel/events` - `/eventcartel/events/search` **Gartner** - `/gartner/categories` - `/gartner/markets` - `/gartner/markets/products` - `/gartner/markets/search` - `/gartner/products` - `/gartner/products/search` - `/gartner/vendors` **GoPlus** - `/goplus/address_security` - `/goplus/approval_security` - `/goplus/nft_approvals` - `/goplus/nft_security` - `/goplus/rugpull` - `/goplus/token_approvals` - `/goplus/token_security` **HackerOne** - `/hackerone/cves` - `/hackerone/hackers` - `/hackerone/hackers/stats` - `/hackerone/leaderboard` - `/hackerone/programs` - `/hackerone/programs/scopes` - `/hackerone/programs/search` - `/hackerone/reports/search` - `/hackerone/weaknesses` **Hugging Face** - `/huggingface/collections` - `/huggingface/collections/search` - `/huggingface/discussions` - `/huggingface/discussions/search` - `/huggingface/orgs` - `/huggingface/spaces` - `/huggingface/spaces/search` - `/huggingface/users` **ICIJ Offshore Leaks** - `/offshoreleaks/nodes` - `/offshoreleaks/nodes/connections` - `/offshoreleaks/search` **InfoJobs** - `/infojobs/companies` - `/infojobs/companies/jobs` - `/infojobs/companies/reviews` - `/infojobs/companies/search` - `/infojobs/salaries` **JobStreet** - `/jobstreet/companies` - `/jobstreet/companies/jobs` - `/jobstreet/companies/reviews` - `/jobstreet/companies/search` - `/jobstreet/jobs` - `/jobstreet/jobs/search` - `/jobstreet/jobs/suggestions` - `/jobstreet/roles` - `/jobstreet/salaries` **Jooble** - `/jooble/jobs/search` - `/jooble/salaries` **Kontramarka** - `/kontramarka/events` - `/kontramarka/events/search` **Kupat Bravo** - `/kupatbravo/events` - `/kupatbravo/events/search` **Libraries.io** - `/librariesio/packages` **Mastodon** - `/mastodon/accounts` - `/mastodon/accounts/followers` - `/mastodon/accounts/following` - `/mastodon/accounts/search` - `/mastodon/accounts/statuses` - `/mastodon/statuses` - `/mastodon/statuses/context` - `/mastodon/statuses/favourited_by` - `/mastodon/statuses/reblogged_by` - `/mastodon/statuses/search` - `/mastodon/trends/links` - `/mastodon/trends/statuses` - `/mastodon/trends/tags` **MTicket** - `/mticket/events` - `/mticket/events/search` **NVD** - `/nvd/cpes/search` - `/nvd/cves` - `/nvd/cves/history` - `/nvd/cves/search` **OpenTable** - `/opentable/restaurants/autocomplete` - `/opentable/restaurants/search` **ORCID** - `/orcid/researchers/fundings` - `/orcid/researchers/peer-reviews` **Owler** - `/owler/companies` - `/owler/companies/competitors` - `/owler/companies/news` - `/owler/companies/search` **Pinterest** - `/pinterest/boards` - `/pinterest/boards/pins` - `/pinterest/boards/search` - `/pinterest/pins` - `/pinterest/pins/search` - `/pinterest/users` - `/pinterest/users/boards` - `/pinterest/users/pins` - `/pinterest/users/search` **Pracuj.pl** - `/pracuj/companies` - `/pracuj/companies/jobs` - `/pracuj/companies/search` - `/pracuj/jobs` - `/pracuj/jobs/search` - `/pracuj/jobs/similar` **PubMed** - `/pubmed/journals` **Quora** - `/quora/answers` - `/quora/questions` - `/quora/topics` - `/quora/users` **Reuters** - `/reuters/articles/search` **Saramin** - `/saramin/companies` - `/saramin/companies/finances` - `/saramin/companies/jobs` - `/saramin/companies/reviews` - `/saramin/companies/salaries` - `/saramin/interviews/search` - `/saramin/jobs` - `/saramin/jobs/search` - `/saramin/salaries/search` **SecurityHeaders** - `/securityheaders/scans` **SimilarWeb** - `/similarweb/websites/search` **SSL Labs** - `/ssllabs/assessments` - `/ssllabs/assessments/endpoints` **StackShare** - `/stackshare/companies` - `/stackshare/companies/search` - `/stackshare/stackups` - `/stackshare/tools` - `/stackshare/tools/alternatives` - `/stackshare/tools/discussions` - `/stackshare/tools/integrations` - `/stackshare/tools/search` **Telegram** - `/telegram/channels` - `/telegram/channels/posts` - `/telegram/posts` **Threads** - `/threads/posts` - `/threads/posts/replies` - `/threads/posts/search` - `/threads/users` - `/threads/users/media` - `/threads/users/posts` - `/threads/users/replies` - `/threads/users/reposts` **TikTok** - `/tiktok/creative_center/ads/search` - `/tiktok/creative_center/hashtags/search` **Torontovka** - `/torontovka/events` - `/torontovka/events/search` **Tumblr** - `/tumblr/blogs` - `/tumblr/blogs/posts` - `/tumblr/posts` **Twitch** - `/twitch/categories` - `/twitch/categories/search` - `/twitch/channels` - `/twitch/channels/clips` - `/twitch/channels/search` - `/twitch/channels/videos` - `/twitch/clips` - `/twitch/streams/search` - `/twitch/videos` - `/twitch/videos/search` **Vecher** - `/vecher/events` - `/vecher/events/search` **Wappalyzer** - `/wappalyzer/categories` - `/wappalyzer/technologies` **Wayback Machine** - `/wayback/snapshots` - `/wayback/snapshots/search` **World Afisha** - `/worldafisha/events` - `/worldafisha/events/search` **World Bank** - `/worldbank/debarred_firms` - `/worldbank/debarred_firms/search` - `/worldbank/other_sanctions` **Zhaopin** - `/zhaopin/companies` - `/zhaopin/companies/search` - `/zhaopin/jobs` - `/zhaopin/jobs/search` **ZIMA Magazine** - `/zimamagazine/events` - `/zimamagazine/events/search` **Improved stability & reliability:** crt.sh, LinkedIn **Binance** - `/binance/klines` - `/binance/order_book` - `/binance/symbols` - `/binance/symbols/search` - `/binance/tickers` - `/binance/tickers/average` - `/binance/tickers/book` - `/binance/tickers/price` - `/binance/trades` - `/binance/trades/aggregated` **Blur** - `/blur/activity/search` - `/blur/collections` - `/blur/collections/bids` - `/blur/collections/charts` - `/blur/collections/holders` - `/blur/collections/loan-offers` - `/blur/collections/loans` - `/blur/collections/search` - `/blur/collections/tokens` - `/blur/collections/traits` - `/blur/tokens` **CarGurus** - `/cargurus/dealers` - `/cargurus/dealers/listings` - `/cargurus/dealers/reviews` - `/cargurus/listings` - `/cargurus/listings/price-history` - `/cargurus/listings/search` **Carsales** - `/carsales/listings/search` **DeBank** - `/debank/chains` - `/debank/collections/holders` - `/debank/protocols/holders` - `/debank/tokens/holders` - `/debank/users` - `/debank/users/history` - `/debank/users/net-curve` - `/debank/users/protocols` - `/debank/users/search` - `/debank/users/tokens` **OpenSea** - `/opensea/accounts` - `/opensea/accounts/items` - `/opensea/collections` - `/opensea/collections/activity` - `/opensea/collections/holders` - `/opensea/collections/search` - `/opensea/collections/traits` - `/opensea/items` - `/opensea/items/activity` - `/opensea/items/search` - `/opensea/tokens` - `/opensea/tokens/search` **Solscan** - `/solscan/accounts` - `/solscan/accounts/defi-activities` - `/solscan/accounts/portfolio` - `/solscan/accounts/search` - `/solscan/accounts/stakes` - `/solscan/accounts/tokens` - `/solscan/accounts/transactions` - `/solscan/accounts/transfers` - `/solscan/blocks` - `/solscan/tokens` - `/solscan/tokens/holders` - `/solscan/tokens/markets` - `/solscan/tokens/price-history` - `/solscan/tokens/search` - `/solscan/tokens/transfers` - `/solscan/transactions` - `/solscan/transactions/search` **Swiggy** - `/swiggy/collections` - `/swiggy/dishes/search` - `/swiggy/restaurants` - `/swiggy/restaurants/menu` - `/swiggy/restaurants/search` - `/swiggy/search/suggest` **Yell** - `/yell/businesses` - `/yell/businesses/reviews` - `/yell/businesses/search` - `/yell/categories` **AutoScout24** - `/autoscout24/dealers` - `/autoscout24/dealers/listings` - `/autoscout24/listings` - `/autoscout24/listings/search` - `/autoscout24/makes` **Cars.com** - `/cars/dealers/listings` - `/cars/listings` - `/cars/listings/search` **CarSensor** - `/carsensor/dealers` - `/carsensor/dealers/listings` - `/carsensor/dealers/search` - `/carsensor/listings` - `/carsensor/listings/search` - `/carsensor/models` - `/carsensor/models/prices` **DappRadar** - `/dappradar/categories` - `/dappradar/chains` - `/dappradar/chains/search` - `/dappradar/dapps` - `/dappradar/dapps/search` - `/dappradar/markets` - `/dappradar/narratives` - `/dappradar/narratives/search` - `/dappradar/pairs` - `/dappradar/pairs/search` - `/dappradar/search` - `/dappradar/tokens` - `/dappradar/tokens/markets` - `/dappradar/tokens/search` **Deliveroo** - `/deliveroo/brands` - `/deliveroo/restaurants` - `/deliveroo/restaurants/search` **Demae-can** - `/demaecan/areas/search` - `/demaecan/shops` - `/demaecan/shops/reviews` - `/demaecan/shops/search` **DoorDash** - `/doordash/stores` - `/doordash/stores/search` **Dune Analytics** - `/dune/blockchains` - `/dune/contracts/search` - `/dune/dashboards` - `/dune/dashboards/search` - `/dune/datasets` - `/dune/datasets/queries` - `/dune/datasets/search` - `/dune/queries` - `/dune/queries/results` - `/dune/queries/search` - `/dune/search` - `/dune/teams` - `/dune/users` - `/dune/users/dashboards` - `/dune/users/queries` **Goo-net** - `/goonet/catalog` - `/goonet/dealers` - `/goonet/dealers/listings` - `/goonet/dealers/reviews` - `/goonet/dealers/search` - `/goonet/listings` - `/goonet/listings/search` - `/goonet/reviews` **Grubhub** - `/grubhub/restaurants` - `/grubhub/restaurants/reviews` - `/grubhub/restaurants/search` **Gurunavi** - `/gurunavi/restaurants` - `/gurunavi/restaurants/courses` - `/gurunavi/restaurants/menu` - `/gurunavi/restaurants/photos` - `/gurunavi/restaurants/reviews` - `/gurunavi/restaurants/search` **Hot Pepper** - `/hotpepper/restaurants` - `/hotpepper/restaurants/coupons` - `/hotpepper/restaurants/courses` - `/hotpepper/restaurants/menu` - `/hotpepper/restaurants/photos` - `/hotpepper/restaurants/reviews` - `/hotpepper/restaurants/search` **Just Eat** - `/justeat/restaurants` - `/justeat/restaurants/search` **L2BEAT** - `/l2beat/da/projects` - `/l2beat/da/projects/search` - `/l2beat/interop/protocols/search` - `/l2beat/projects` - `/l2beat/projects/activity` - `/l2beat/projects/costs` - `/l2beat/projects/liveness` - `/l2beat/projects/search` - `/l2beat/projects/tvs` - `/l2beat/summary` **Magic Eden** - `/magiceden/collections` - `/magiceden/collections/activities` - `/magiceden/collections/attributes` - `/magiceden/collections/holders` - `/magiceden/collections/listings` - `/magiceden/collections/pools` - `/magiceden/collections/search` - `/magiceden/collections/stats` - `/magiceden/packs` - `/magiceden/tokens` - `/magiceden/tokens/activities` - `/magiceden/wallets/tokens` **Messari** - `/messari/assets` - `/messari/assets/events` - `/messari/assets/markets` - `/messari/assets/metrics` - `/messari/assets/profile` - `/messari/assets/search` - `/messari/assets/unlocks` - `/messari/fundraising/rounds/search` - `/messari/news/search` - `/messari/research/search` - `/messari/signals` **PagesJaunes** - `/pagesjaunes/businesses` - `/pagesjaunes/businesses/reviews` - `/pagesjaunes/businesses/search` - `/pagesjaunes/categories` - `/pagesjaunes/people/search` **Snapshot** - `/snapshot/networks` - `/snapshot/networks/search` - `/snapshot/proposals` - `/snapshot/proposals/search` - `/snapshot/spaces` - `/snapshot/spaces/followers` - `/snapshot/spaces/leaderboard` - `/snapshot/spaces/search` - `/snapshot/strategies` - `/snapshot/strategies/search` - `/snapshot/users` - `/snapshot/users/follows` - `/snapshot/votes/search` **Uber Eats** - `/ubereats/stores` - `/ubereats/stores/search` **Yellow Pages** - `/yellowpages/businesses` - `/yellowpages/businesses/coupons` - `/yellowpages/businesses/photos` - `/yellowpages/businesses/reviews` - `/yellowpages/businesses/search` **Zerion** - `/zerion/chains` - `/zerion/fungibles` - `/zerion/fungibles/search` - `/zerion/wallets` - `/zerion/wallets/chart` - `/zerion/wallets/nfts` - `/zerion/wallets/pnl` - `/zerion/wallets/positions` - `/zerion/wallets/transactions` **Zomato** - `/zomato/collections` - `/zomato/restaurants` - `/zomato/restaurants/menu` - `/zomato/restaurants/photos` - `/zomato/restaurants/reviews` - `/zomato/restaurants/search` **Improved stability & reliability:** Domain, Fotocasa, Hemnet, Housing.com, Immobiliare.it, Magicbricks, Pararius, Property Finder, PropertyGuru, QuintoAndar, Trade Me, Zap Imóveis **Baidu** - `/baidu/search` **BBC** - `/bbc/feeds` **Bing** - `/bing/news/articles/search` - `/bing/news/articles/top` - `/bing/search` **Brave Search** - `/brave/search` **GDELT** - `/gdelt/articles/context` - `/gdelt/articles/search` - `/gdelt/coverage/timeline` - `/gdelt/coverage/tone` **Google** - `/google/news/articles` - `/google/news/articles/search` - `/google/news/topics` - `/google/news/topics/geo` **Ground News** - `/ground_news/interests/stories` - `/ground_news/sources` - `/ground_news/stories` - `/ground_news/stories/blindspot` - `/ground_news/stories/search` - `/ground_news/stories/top` **Startpage** - `/startpage/search` **Techmeme** - `/techmeme/authors` - `/techmeme/publications` - `/techmeme/stories` - `/techmeme/stories/front_page` - `/techmeme/stories/river` - `/techmeme/stories/search` **Yandex Search** - `/yandexsearch/search` **Instagram** - `/instagram/audio` - `/instagram/location` - `/instagram/post/comments/likers` - `/instagram/post/comments/replies` - `/instagram/post/likers` - `/instagram/user/about` - `/instagram/user/followers` - `/instagram/user/following` - `/instagram/user/highlights` - `/instagram/user/highlights/items` - `/instagram/user/related` - `/instagram/user/stories` - `/instagram/user/tagged` **Twitter / X** - `/twitter/communities` - `/twitter/communities/members` - `/twitter/communities/moderators` - `/twitter/communities/tweets` - `/twitter/lists` - `/twitter/lists/members` - `/twitter/lists/subscribers` - `/twitter/lists/tweets` - `/twitter/posts` - `/twitter/posts/quotes` - `/twitter/posts/replies` - `/twitter/posts/retweeters` - `/twitter/search/lists` - `/twitter/trends` - `/twitter/user/followers` - `/twitter/user/following` - `/twitter/user/highlights` - `/twitter/user/lists` - `/twitter/user/media` - `/twitter/user/replies` **Web Parser** - `/webparser/render` **Improved stability & reliability:** CRO (Ireland) **11Street** - `/street11/categories` - `/street11/products` - `/street11/products/questions` - `/street11/products/reviews` - `/street11/products/search` - `/street11/sellers` - `/street11/sellers/products` **17TRACK** - `/track17/carriers/search` **Bank for International Settlements (BIS)** - `/bis/datasets` - `/bis/datasets/dimensions` - `/bis/datasets/search` **Blibli** - `/blibli/categories` - `/blibli/products` - `/blibli/products/reviews` - `/blibli/products/search` - `/blibli/sellers` - `/blibli/sellers/products` **Cdiscount** - `/cdiscount/products` - `/cdiscount/products/offers` - `/cdiscount/products/reviews` - `/cdiscount/products/search` **CMS Medicare** - `/cms_medicare/datasets` - `/cms_medicare/datasets/columns` - `/cms_medicare/datasets/facets` - `/cms_medicare/datasets/rows` - `/cms_medicare/datasets/search` - `/cms_medicare/topics` **CMS Open Payments** - `/cms_open_payments/companies` - `/cms_open_payments/companies/search` - `/cms_open_payments/datasets` - `/cms_open_payments/payments/search` - `/cms_open_payments/payments/summary` - `/cms_open_payments/recipients` - `/cms_open_payments/recipients/payments-summary` - `/cms_open_payments/recipients/search` - `/cms_open_payments/teaching_hospitals` - `/cms_open_payments/teaching_hospitals/search` **CoinGlass** - `/coinglass/coins/search` - `/coinglass/etf/flows` - `/coinglass/exchanges` - `/coinglass/funding_rates` - `/coinglass/funding_rates/history` - `/coinglass/liquidations/heatmap` - `/coinglass/liquidations/history` - `/coinglass/long_short_ratio/history` - `/coinglass/open_interest/history` - `/coinglass/options/history` - `/coinglass/spot/coins` **CONDUSEF (Mexico)** - `/condusef/entities` - `/condusef/entities/search` - `/condusef/sectors/entities` - `/condusef/sectors/ratings` **DBpedia** - `/dbpedia/resources` - `/dbpedia/resources/properties` - `/dbpedia/resources/search` - `/dbpedia/sparql` **European Central Bank (ECB)** - `/ecb/datasets` - `/ecb/datasets/dimensions` - `/ecb/datasets/search` - `/ecb/datasets/series/search` - `/ecb/series` **Fandom** - `/fandom/categories/members` - `/fandom/pages` - `/fandom/pages/content` - `/fandom/pages/list` - `/fandom/pages/revisions` - `/fandom/pages/search` - `/fandom/users` - `/fandom/wikis` **Federal Register** - `/federalregister/agencies` - `/federalregister/agencies/search` - `/federalregister/documents` - `/federalregister/documents/facets` - `/federalregister/documents/search` - `/federalregister/issues` - `/federalregister/public_inspection_documents` - `/federalregister/public_inspection_documents/search` **GoodRx** - `/goodrx/classes` - `/goodrx/drugs` - `/goodrx/drugs/info` - `/goodrx/drugs/prices` - `/goodrx/drugs/search` **Hepsiburada** - `/hepsiburada/categories` - `/hepsiburada/categories/products` - `/hepsiburada/merchants` - `/hepsiburada/merchants/products` - `/hepsiburada/products` - `/hepsiburada/products/reviews` - `/hepsiburada/products/search` - `/hepsiburada/products/sellers` **J-PlatPat (Japan)** - `/jplatpat/patents` - `/jplatpat/patents/search` **John Lewis** - `/johnlewis/categories` - `/johnlewis/categories/products` - `/johnlewis/products` - `/johnlewis/products/reviews` - `/johnlewis/products/search` **Kaufland** - `/kaufland/categories/products` - `/kaufland/products` - `/kaufland/products/autosuggest` - `/kaufland/products/buy-box` - `/kaufland/products/offers` - `/kaufland/products/reviews` - `/kaufland/products/search` - `/kaufland/products/variants` - `/kaufland/sellers` **KIPRIS (Korea)** - `/kipris/designs` - `/kipris/designs/search` - `/kipris/patents` - `/kipris/patents/search` - `/kipris/trademarks` - `/kipris/trademarks/search` - `/kipris/trials` - `/kipris/trials/search` **Kleinanzeigen** - `/kleinanzeigen/categories` - `/kleinanzeigen/listings` - `/kleinanzeigen/listings/search` - `/kleinanzeigen/listings/similar` - `/kleinanzeigen/sellers` - `/kleinanzeigen/sellers/listings` **Levels.fyi** - `/levelsfyi/companies` - `/levelsfyi/companies/benefits` - `/levelsfyi/companies/salaries` - `/levelsfyi/internships/search` - `/levelsfyi/titles` **LinkedIn** - `/linkedin/ad_library/ads` - `/linkedin/ad_library/ads/search` - `/linkedin/ad_library/advertisers/ads` **Myntra** - `/myntra/brands/products` - `/myntra/products` - `/myntra/products/reviews` - `/myntra/products/search` **n11** - `/n11/categories` - `/n11/products` - `/n11/products/reviews` - `/n11/products/search` - `/n11/products/sellers` - `/n11/sellers` - `/n11/sellers/products` **NHS** - `/nhs/conditions` - `/nhs/conditions/search` - `/nhs/medicines` - `/nhs/medicines/search` - `/nhs/services` - `/nhs/services/search` **OpenFIGI** - `/openfigi/instruments` - `/openfigi/instruments/search` - `/openfigi/instruments/values` **OpenSecrets** - `/opensecrets/industries` - `/opensecrets/industries/search` - `/opensecrets/lobbying_clients` - `/opensecrets/members` - `/opensecrets/members/search` - `/opensecrets/organizations` - `/opensecrets/organizations/search` - `/opensecrets/pacs/search` **OpenSky Network** - `/opensky/states` - `/opensky/states/search` - `/opensky/tracks` **Otta** - `/otta/companies` - `/otta/companies/jobs` - `/otta/companies/search` - `/otta/jobs` **PayScale** - `/payscale/cost_of_living` - `/payscale/degrees` - `/payscale/employers` - `/payscale/industries` - `/payscale/jobs` - `/payscale/jobs/reviews` - `/payscale/schools` **Salary.com** - `/salarycom/cost_of_living` - `/salarycom/salaries` - `/salarycom/salaries/search` **SAT (Mexico)** - `/sat/taxpayers` - `/sat/taxpayers/list` - `/sat/taxpayers/search` **Snapchat** - `/snapchat/ads` - `/snapchat/ads/search` **Snapdeal** - `/snapdeal/products` - `/snapdeal/products/questions` - `/snapdeal/products/reviews` - `/snapdeal/products/search` **Twitter / X** - `/twitter/ads/advertisers` - `/twitter/ads/search` **Ubersuggest** - `/ubersuggest/domains/anchors` - `/ubersuggest/domains/backlinks` - `/ubersuggest/domains/backlinks-overview` - `/ubersuggest/domains/content-ideas` - `/ubersuggest/domains/da-distribution` - `/ubersuggest/domains/linking-domains` - `/ubersuggest/domains/pages` - `/ubersuggest/keywords` - `/ubersuggest/keywords/prompts` - `/ubersuggest/keywords/search` - `/ubersuggest/keywords/serp` - `/ubersuggest/locations/search` - `/ubersuggest/pages` - `/ubersuggest/pages/keywords` - `/ubersuggest/urls/backlink-counts` **UN Comtrade** - `/comtrade/commodities/search` - `/comtrade/datasets` - `/comtrade/datasets/metadata` - `/comtrade/datasets/search` - `/comtrade/partners` - `/comtrade/reporters` - `/comtrade/trades/search` **Vitals** - `/vitals/doctors` - `/vitals/doctors/reviews` - `/vitals/doctors/search` - `/vitals/hospitals` - `/vitals/hospitals/search` - `/vitals/practices` - `/vitals/practices/search` - `/vitals/specialties` **Wikidata** - `/wikidata/items` - `/wikidata/items/cirrus` - `/wikidata/items/labels` - `/wikidata/items/search` - `/wikidata/items/sitelinks` - `/wikidata/items/statements` - `/wikidata/lexemes` - `/wikidata/properties` - `/wikidata/sparql` **Wikimedia Commons** - `/wikimedia_commons/categories` - `/wikimedia_commons/categories/members` - `/wikimedia_commons/files` - `/wikimedia_commons/files/list` - `/wikimedia_commons/files/search` - `/wikimedia_commons/files/structured-data` - `/wikimedia_commons/files/usage` **Wikipedia** - `/wikipedia/articles` - `/wikipedia/articles/categories` - `/wikipedia/articles/content` - `/wikipedia/articles/langlinks` - `/wikipedia/articles/links` - `/wikipedia/articles/search` - `/wikipedia/categories/members` **Improved stability & reliability:** 2GIS, 99acres, Agoda, Airbnb, Al Jazeera, Alabama, Albert Heijn, Alibaba, Amazon, Apartments.com, Apify, APKPure, App Store, Arkansas, Ashby, ASOS, AtHome, Auto.ru, Bank of Russia (CBR), Banki.ru, BBB, Best Buy, bioRxiv, BO Nalog, bol.com, Built In, Capterra, Casebook, Cerlive, ClinicalTrials.gov, CoinGecko, CoinMarketCap, Colorado, Companies House, Comparably, ConsumerAffairs, Coolblue, CORE, Costco, Crossref, Crunchbase, Data.gov, DataCite, DeFiLlama, Delaware, Dice, Discogs, Docker Hub, Doda, DomClick, Drom, DuckDuckGo, eBay, Epic Games, EU Open Data, Eurostat, Expedia, Facebook, FINMA, Finviz, FIPS (Rospatent), Flamp, Flipkart, Florida, FRED, Funda, G2, GAS Pravosudie, Georgia, GetYourGuide, GitHub, GitLab, Glassdoor, Google, Google Scholar, Greenhouse, H&M, Habr, Habr Career, Hacker News, Handelsregister, Hawaii, HeadHunter, Hostelworld, Houjin Bangou, Hugging Face, Idaho, IMF, Indeed, Infogreffe, Instagram, Interfax, Investing.com, Iowa, iRecommend, itch.io, Jalan, Japan Exchange (JPX), Jumbo, Kakaku, Kalshi, Kentucky, Kinopoisk, Kommersant, Kontur.Focus, KRS, kununu, Lever, LIFULL, List-Org, Macrotrends, Maine, MarketWatch, Massachusetts, Medium, Mercari, Microsoft Store, Minnesota, Missouri, MOEX (Moscow Exchange), Morningstar, Mynavi, NASDAQ, Naukri, New Hampshire, New Jersey, New Mexico, New York, Newegg, North Dakota, note, npm, OECD, Oklahoma, ONRC, OpenAIRE, OpenAlex, OpenCorporates, OpenSanctions, ORCID, Otzovik, Pappers, PATENTSCOPE, PB Nalog, Pets Place, Polymarket, Product Hunt, PyPI, Rakuten, Rakuten Travel, RDAP, Reddit, Redfin, Reed, RemoteOK, Rhode Island, Rightmove, Rikunabi, RMSP (SME Registry), ROR, Rosreestr, SAM.gov, SBIS, SEC, Seek, Seeking Alpha, SeLoger, Semantic Scholar, Shopify, Siemens, SimplyHired, Sirene, Sitejabber, Skyscanner, South Carolina, SPARK, Sravni, Stack Exchange, Steam, SteamDB, StepStone, StockTwits, Stooq, Substack, SuperJob, SUUMO, Tabelog, Target, Texas, Tianyancha, TikTok, Totaljobs, Trading Economics, TradingView, Trendyol, Trip.com, Trulia, TrustRadius, Unpaywall, US Census, USAspending, USPTO Trademarks, Utah, VC.ru, Viator, Vinted, Walmart, Wantedly, Wayfair, We Work Remotely, Welcome to the Jungle, West Virginia, Workable, Workday, World Bank, Yahoo, Yahoo Shopping, Yandex Maps, Yandex Market, Yandex Realty, YouTube, Za Chestnyi Biznes, Zalando, Zara, Zauba, Zoopla **ACRA (Singapore)** - `/acra/companies` - `/acra/companies/search` **ARES (Czech Republic)** - `/ares/companies` - `/ares/companies/res` - `/ares/companies/ros` - `/ares/companies/rzp` - `/ares/companies/search` - `/ares/companies/vr` **BORME (Spain)** - `/borme/acts` - `/borme/announcements/search` - `/borme/summaries` **Brønnøysund Register (Norway)** - `/brreg/companies` - `/brreg/companies/accounts` - `/brreg/companies/roles` - `/brreg/companies/search` - `/brreg/companies/sub_units` - `/brreg/sub_units` - `/brreg/sub_units/search` **CAC (Nigeria)** - `/cac/companies` - `/cac/companies/search` **CNPJ (Brazil)** - `/cnpj/companies` **CRO (Ireland)** - `/cro/companies` - `/cro/companies/addresses` - `/cro/companies/certificates` - `/cro/companies/events` - `/cro/companies/filings` - `/cro/companies/names` - `/cro/companies/quick-search` - `/cro/companies/search` **Domain** - `/domain/agents` - `/domain/agents/listings` - `/domain/properties` - `/domain/properties/search` **Estonian Business Register** - `/ariregister/companies` - `/ariregister/companies/search` **Firmenbuch (Austria)** - `/firmenbuch/companies` - `/firmenbuch/companies/search` **Fotocasa** - `/fotocasa/agencies/listings` - `/fotocasa/agencies/search` - `/fotocasa/properties` - `/fotocasa/properties/search` **Hemnet** - `/hemnet/brokers/search` - `/hemnet/locations/search` - `/hemnet/properties` - `/hemnet/properties/search` - `/hemnet/properties/sold` **Housing.com** - `/housing/locations/autocomplete` - `/housing/projects` - `/housing/properties` - `/housing/properties/search` **Immobiliare.it** - `/immobiliare/agencies/properties` - `/immobiliare/agencies/search` - `/immobiliare/properties` - `/immobiliare/properties/search` **KBO/BCE (Belgium)** - `/kbo/companies` - `/kbo/companies/establishments` - `/kbo/companies/search` - `/kbo/establishments` **Magicbricks** - `/magicbricks/projects` - `/magicbricks/projects/search` - `/magicbricks/properties` - `/magicbricks/properties/search` **NZBN (New Zealand)** - `/nzbn/companies` - `/nzbn/companies/search` **Pararius** - `/pararius/agents` - `/pararius/agents/properties` - `/pararius/properties` - `/pararius/properties/search` **PRH (Finland)** - `/prh/companies` - `/prh/companies/financials` - `/prh/companies/notifications` - `/prh/companies/search` **Property Finder** - `/propertyfinder/agents` - `/propertyfinder/agents/search` - `/propertyfinder/locations/search` - `/propertyfinder/properties` - `/propertyfinder/properties/search` **PropertyGuru** - `/propertyguru/agents` - `/propertyguru/projects` - `/propertyguru/properties` - `/propertyguru/properties/search` **QuintoAndar** - `/quintoandar/properties` - `/quintoandar/properties/search` - `/quintoandar/properties/similar` **RUES (Colombia)** - `/rues/cameras` - `/rues/companies` - `/rues/companies/search` - `/rues/departments` **Rusprofile** - `/rusprofile/companies` - `/rusprofile/companies/arbitrations` - `/rusprofile/companies/connections` - `/rusprofile/companies/enforcements` - `/rusprofile/companies/general-court-cases` - `/rusprofile/companies/procurements` - `/rusprofile/companies/search` **Trade Me** - `/trademe/agents` - `/trademe/agents/search` - `/trademe/properties` - `/trademe/properties/search` **Zap Imóveis** - `/zapimoveis/locations/search` - `/zapimoveis/properties` - `/zapimoveis/properties/search` **Zefix (Switzerland)** - `/zefix/companies` - `/zefix/companies/publications` - `/zefix/companies/search` - `/zefix/reference/legal-forms` - `/zefix/reference/localities` - `/zefix/reference/register-offices` **LinkedIn** - `/linkedin/user/articles` **Improved stability & reliability:** App Store, Costco, GAS Pravosudie, Investing.com, List-Org, MarketWatch, Morningstar, Rakuten, Rikunabi, SeLoger, Siemens, Viator, Web Parser, Za Chestnyi Biznes **Casebook** - `/casebook/companies` - `/casebook/companies/search` **DataCite** - `/datacite/clients` - `/datacite/clients/search` - `/datacite/dois` - `/datacite/dois/search` - `/datacite/providers` - `/datacite/providers/search` **DomClick** - `/domclick/agencies` - `/domclick/agencies/agents` - `/domclick/agencies/offers` - `/domclick/agencies/reviews` - `/domclick/geo/suggest` - `/domclick/offers/search` **Flamp** - `/flamp/firms` - `/flamp/firms/reviews` - `/flamp/reviews` - `/flamp/rubrics` - `/flamp/users` - `/flamp/users/reviews` **FRED** - `/fred/series` - `/fred/series/observations` - `/fred/series/search` **Hugging Face** - `/huggingface/datasets` - `/huggingface/datasets/search` - `/huggingface/models` - `/huggingface/models/search` - `/huggingface/papers` - `/huggingface/papers/search` - `/huggingface/papers/trending` **IMF** - `/imf/datasets` - `/imf/datasets/dimensions` - `/imf/datasets/search` **Interfax** - `/interfax/articles` - `/interfax/articles/search` - `/interfax/categories/articles` - `/interfax/stories/articles` - `/interfax/tags/articles` **iRecommend** - `/irecommend/categories/objects` - `/irecommend/objects` - `/irecommend/objects/reviews` - `/irecommend/objects/search` - `/irecommend/reviews` - `/irecommend/reviews/feed` - `/irecommend/users` - `/irecommend/users/reviews` **Kommersant** - `/kommersant/archive` - `/kommersant/articles` - `/kommersant/articles/search` - `/kommersant/authors/articles` - `/kommersant/rubrics/articles` **Kontur.Focus** - `/konturfocus/companies` - `/konturfocus/companies/autocomplete` - `/konturfocus/companies/search` **OECD** - `/oecd/datasets` - `/oecd/datasets/dimensions` - `/oecd/datasets/search` **OpenAIRE** - `/openaire/data_sources` - `/openaire/data_sources/search` - `/openaire/organizations` - `/openaire/organizations/search` - `/openaire/projects` - `/openaire/projects/search` - `/openaire/research_products` - `/openaire/research_products/search` **ORCID** - `/orcid/researchers` - `/orcid/researchers/search` - `/orcid/researchers/works` **Pikabu** - `/pikabu/communities` - `/pikabu/communities/search` - `/pikabu/communities/stories` - `/pikabu/stories` - `/pikabu/stories/comments` - `/pikabu/stories/feed` - `/pikabu/stories/search` - `/pikabu/tags/search` - `/pikabu/tags/stories` - `/pikabu/users` - `/pikabu/users/comments` - `/pikabu/users/search` - `/pikabu/users/stories` **PubChem** - `/pubchem/compounds` - `/pubchem/compounds/search` - `/pubchem/substances` **PubMed** - `/pubmed/articles` - `/pubmed/articles/citations` - `/pubmed/articles/references` - `/pubmed/articles/related` - `/pubmed/articles/search` **ROR** - `/ror/organizations` - `/ror/organizations/search` **RuTube** - `/rutube/channels` - `/rutube/channels/search` - `/rutube/channels/videos` - `/rutube/shows/search` - `/rutube/videos` - `/rutube/videos/category` - `/rutube/videos/comments` - `/rutube/videos/related` - `/rutube/videos/search` **SBIS** - `/sbis/contragents` - `/sbis/contragents/search` **SPARK** - `/spark/companies` - `/spark/companies/search` - `/spark/companies/similar` **Sravni** - `/sravni/banks` - `/sravni/banks/search` - `/sravni/deposits/search` - `/sravni/insurance_companies` - `/sravni/insurance_companies/search` - `/sravni/microfinance_companies` - `/sravni/microfinance_companies/search` - `/sravni/organizations/ratings` - `/sravni/reviews/search` **Unpaywall** - `/unpaywall/works` **World Bank** - `/worldbank/countries` - `/worldbank/indicators` - `/worldbank/indicators/search` - `/worldbank/sources` - `/worldbank/topics` **Yandex Realty** - `/yandexrealty/developers` - `/yandexrealty/developers/sites` - `/yandexrealty/offers` - `/yandexrealty/offers/search` - `/yandexrealty/sites` - `/yandexrealty/sites/plans` - `/yandexrealty/sites/reviews` - `/yandexrealty/sites/search` **Zenodo** - `/zenodo/records` - `/zenodo/records/search` **Improved stability & reliability:** Epic Games, Google, LinkedIn, New York, Wayfair, YouTube **bioRxiv** - `/biorxiv/preprints` - `/biorxiv/preprints/published` - `/biorxiv/preprints/publisher` - `/biorxiv/preprints/search` **ClinicalTrials.gov** - `/clinicaltrials/studies` - `/clinicaltrials/studies/search` **CORE** - `/core/data_providers` - `/core/data_providers/search` - `/core/journals` - `/core/outputs` - `/core/works` - `/core/works/search` **Crossref** - `/crossref/funders` - `/crossref/funders/search` - `/crossref/funders/works` - `/crossref/journals` - `/crossref/journals/search` - `/crossref/journals/works` - `/crossref/members` - `/crossref/members/search` - `/crossref/members/works` - `/crossref/prefixes` - `/crossref/works` - `/crossref/works/search` **Data.gov** - `/datagov/datasets` - `/datagov/datasets/search` - `/datagov/keywords` - `/datagov/organizations` - `/datagov/publishers` **EU Open Data** - `/euopendata/datasets` - `/euopendata/datasets/search` **EUIPO** - `/euipo/trademarks` - `/euipo/trademarks/search` **Europe PMC** - `/europepmc/articles` - `/europepmc/articles/citations` - `/europepmc/articles/datalinks` - `/europepmc/articles/references` - `/europepmc/articles/search` **Eurostat** - `/eurostat/datasets` - `/eurostat/datasets/dimensions` - `/eurostat/datasets/search` **OpenAlex** - `/openalex/authors` - `/openalex/authors/search` - `/openalex/autocomplete` - `/openalex/concepts` - `/openalex/concepts/search` - `/openalex/funders` - `/openalex/funders/search` - `/openalex/institutions` - `/openalex/institutions/search` - `/openalex/publishers` - `/openalex/publishers/search` - `/openalex/sources` - `/openalex/sources/search` - `/openalex/topics` - `/openalex/topics/search` - `/openalex/works` - `/openalex/works/citations` - `/openalex/works/references` - `/openalex/works/search` **PATENTSCOPE** - `/patentscope/patents` - `/patentscope/patents/search` **Trading Economics** - `/tradingeconomics/calendar` - `/tradingeconomics/countries/indicators` - `/tradingeconomics/indicators` - `/tradingeconomics/indicators/search` - `/tradingeconomics/markets` **US Census** - `/census/datasets/search` - `/census/geographies/search` - `/census/tables` - `/census/tables/search` - `/census/variables/search` **USPTO Trademarks** - `/uspto_trademarks/marks` - `/uspto_trademarks/marks/search` **WIPO Brand Database** - `/wipo_brands/trademarks` - `/wipo_brands/trademarks/search` - `/wipo_brands/trademarks/statistics` **Pets Place** - `/petsplace/brands/search` - `/petsplace/categories` - `/petsplace/products` - `/petsplace/products/reviews` - `/petsplace/products/search` **2GIS** - `/twogis/places` - `/twogis/places/branches` - `/twogis/places/search` - `/twogis/places/suggest` - `/twogis/regions/search` - `/twogis/reviews` **Alabama** - `/alabama/companies` - `/alabama/companies/search` **Arkansas** - `/arkansas/companies` - `/arkansas/companies/search` **Auto.ru** - `/autoru/catalog` - `/autoru/dealers` - `/autoru/dealers/offers` - `/autoru/dealers/search` - `/autoru/offers` - `/autoru/offers/search` **Bank of Russia (CBR)** - `/cbr/banks` - `/cbr/currencies` - `/cbr/currency_basket` - `/cbr/key_rate` - `/cbr/metals` - `/cbr/rates` - `/cbr/rates/history` - `/cbr/rates/interbank` - `/cbr/rates/ruonia` - `/cbr/reserves` **Banki.ru** - `/banki/banks` - `/banki/banks/ratings` - `/banki/banks/reviews` - `/banki/banks/search` - `/banki/ratings/search` - `/banki/reviews/search` **BO Nalog** - `/bonalog/organizations` - `/bonalog/organizations/autocomplete` - `/bonalog/organizations/financials` - `/bonalog/organizations/search` **CIAN** - `/cian/offers` - `/cian/offers/search` **Colorado** - `/colorado/companies` - `/colorado/companies/filings` - `/colorado/companies/search` **Delaware** - `/delaware/companies` - `/delaware/companies/search` **Drom** - `/drom/cars` - `/drom/cars/search` - `/drom/catalog` - `/drom/dealers/search` - `/drom/reviews` - `/drom/reviews/search` **Fedresurs** - `/fedresurs/companies` - `/fedresurs/companies/search` - `/fedresurs/persons` - `/fedresurs/persons/search` **FIPS (Rospatent)** - `/fips/databases` - `/fips/designs` - `/fips/patents` - `/fips/software` - `/fips/trademarks` - `/fips/utility_models` **Florida** - `/florida/companies` - `/florida/companies/filings` - `/florida/companies/search` **GAS Pravosudie** - `/gaspravosudie/acts` - `/gaspravosudie/acts/search` - `/gaspravosudie/cases` - `/gaspravosudie/cases/movement` - `/gaspravosudie/cases/parties` - `/gaspravosudie/cases/search` - `/gaspravosudie/courts` - `/gaspravosudie/courts/search` **Georgia** - `/georgia/companies` - `/georgia/companies/filings` - `/georgia/companies/search` **Habr** - `/habr/articles` - `/habr/articles/comments` - `/habr/articles/search` - `/habr/companies` - `/habr/companies/articles` - `/habr/hubs` - `/habr/hubs/articles` - `/habr/users` - `/habr/users/articles` - `/habr/users/comments` **Habr Career** - `/habrcareer/companies` - `/habrcareer/companies/ratings` - `/habrcareer/companies/search` - `/habrcareer/companies/vacancies` - `/habrcareer/experts/search` - `/habrcareer/qualifications` - `/habrcareer/resumes` - `/habrcareer/resumes/search` - `/habrcareer/salaries` - `/habrcareer/salaries/dynamics` - `/habrcareer/specializations` - `/habrcareer/vacancies` - `/habrcareer/vacancies/search` **Hawaii** - `/hawaii/companies` **Idaho** - `/idaho/companies` - `/idaho/companies/search` **Iowa** - `/iowa/companies` - `/iowa/companies/search` **Kalshi** - `/kalshi/events` - `/kalshi/events/search` - `/kalshi/markets` - `/kalshi/markets/history` - `/kalshi/markets/orderbook` - `/kalshi/markets/search` - `/kalshi/markets/trades` - `/kalshi/series` - `/kalshi/series/search` **Kentucky** - `/kentucky/companies` - `/kentucky/companies/activities` - `/kentucky/companies/documents` - `/kentucky/companies/search` **Kinopoisk** - `/kinopoisk/films` - `/kinopoisk/films/cast` - `/kinopoisk/films/discover` - `/kinopoisk/films/reviews` - `/kinopoisk/films/search` - `/kinopoisk/films/top250` - `/kinopoisk/persons` - `/kinopoisk/persons/search` **List-Org** - `/listorg/companies` - `/listorg/companies/financials` - `/listorg/companies/search` - `/listorg/persons` - `/listorg/persons/search` - `/listorg/trademarks` - `/listorg/trademarks/search` **Maine** - `/maine/companies` - `/maine/companies/filings` - `/maine/companies/search` **Massachusetts** - `/massachusetts/companies` - `/massachusetts/companies/filings` - `/massachusetts/companies/search` **Minnesota** - `/minnesota/companies` - `/minnesota/companies/search` **Missouri** - `/missouri/companies` - `/missouri/companies/filings` - `/missouri/companies/search` **MOEX (Moscow Exchange)** - `/moex/currencies/rates` - `/moex/engines` - `/moex/indices` - `/moex/indices/constituents` - `/moex/indices/history` - `/moex/markets/securities` - `/moex/securities` - `/moex/securities/candles` - `/moex/securities/history` - `/moex/securities/quotes` - `/moex/securities/search` - `/moex/turnovers` **New Hampshire** - `/new_hampshire/companies` - `/new_hampshire/companies/search` **New Jersey** - `/new_jersey/companies/search` **New Mexico** - `/new_mexico/companies` - `/new_mexico/companies/search` **New York** - `/new_york/companies` - `/new_york/companies/filings` - `/new_york/companies/search` **North Dakota** - `/north_dakota/companies` - `/north_dakota/companies/search` **Oklahoma** - `/oklahoma/companies` **Otzovik** - `/otzovik/categories` - `/otzovik/objects` - `/otzovik/objects/reviews` - `/otzovik/objects/search` - `/otzovik/reviews` - `/otzovik/reviews/comments` - `/otzovik/users` - `/otzovik/users/reviews` **PB Nalog** - `/pbnalog/addresses/search` - `/pbnalog/companies` - `/pbnalog/companies/search` - `/pbnalog/disqualified/search` - `/pbnalog/documents/search` - `/pbnalog/persons/search` - `/pbnalog/restrictions/search` **Polymarket** - `/polymarket/events` - `/polymarket/events/comments` - `/polymarket/events/search` - `/polymarket/markets` - `/polymarket/markets/book` - `/polymarket/markets/history` - `/polymarket/markets/holders` - `/polymarket/markets/trades` - `/polymarket/tags` **Rhode Island** - `/rhode_island/companies` - `/rhode_island/companies/filings` - `/rhode_island/companies/search` **RMSP (SME Registry)** - `/rmsp/companies` - `/rmsp/companies/search` **Rosreestr** - `/rosreestr/objects` - `/rosreestr/objects/parts` - `/rosreestr/objects/search` **South Carolina** - `/south_carolina/companies` - `/south_carolina/companies/filings` - `/south_carolina/companies/search` **SuperJob** - `/superjob/areas` - `/superjob/clients` - `/superjob/clients/search` - `/superjob/clients/vacancies` - `/superjob/dictionaries` - `/superjob/industries` - `/superjob/resumes` - `/superjob/resumes/search` - `/superjob/subjects` - `/superjob/vacancies` - `/superjob/vacancies/search` - `/superjob/vacancies/similar` **Texas** - `/texas/companies` - `/texas/companies/search` **Utah** - `/utah/companies` - `/utah/companies/filings` - `/utah/companies/search` **VC.ru** - `/vcru/articles` - `/vcru/articles/comments` - `/vcru/articles/search` - `/vcru/articles/timeline` - `/vcru/news` - `/vcru/subsites` - `/vcru/subsites/articles` **West Virginia** - `/west_virginia/companies` - `/west_virginia/companies/search` **Yandex Maps** - `/yandexmaps/organizations` - `/yandexmaps/organizations/menu` - `/yandexmaps/organizations/rating` - `/yandexmaps/organizations/reviews` - `/yandexmaps/organizations/search` **Yandex Market** - `/yandexmarket/categories/products` - `/yandexmarket/products` - `/yandexmarket/products/offers` - `/yandexmarket/products/reviews` - `/yandexmarket/products/search` **Za Chestnyi Biznes** - `/zachestnyibiznes/companies` - `/zachestnyibiznes/companies/branches` - `/zachestnyibiznes/companies/certificates` - `/zachestnyibiznes/companies/courts` - `/zachestnyibiznes/companies/enforcements` - `/zachestnyibiznes/companies/financials` - `/zachestnyibiznes/companies/inspections` - `/zachestnyibiznes/companies/licenses` - `/zachestnyibiznes/companies/relations` - `/zachestnyibiznes/companies/representation` - `/zachestnyibiznes/companies/requisites` - `/zachestnyibiznes/companies/search` - `/zachestnyibiznes/companies/significant-facts` - `/zachestnyibiznes/companies/trademarks` **Discogs** - Cosmetic fix to endpoint grouping in the API Reference — no change to endpoint behavior or responses. **Ashby** - `/ashby/jobs` - `/ashby/jobs/search` **Built In** - `/builtin/companies` - `/builtin/companies/search` - `/builtin/jobs` - `/builtin/jobs/search` **Dice** - `/dice/companies` - `/dice/companies/search` - `/dice/jobs` - `/dice/jobs/search` **Doda** - `/doda/jobs` - `/doda/jobs/search` **Glassdoor** - `/glassdoor/companies` - `/glassdoor/companies/ratings` - `/glassdoor/companies/search` - `/glassdoor/jobs` - `/glassdoor/jobs/search` - `/glassdoor/salaries/search` **Google** - `/google/patents/patents/patents` - `/google/patents/patents/patents/search` **Greenhouse** - `/greenhouse/jobs` - `/greenhouse/jobs/departments` - `/greenhouse/jobs/offices` - `/greenhouse/jobs/search` **Hacker News** - `/hackernews/whoishiring` **Indeed** - `/indeed/companies` - `/indeed/companies/reviews` - `/indeed/jobs` - `/indeed/jobs/search` - `/indeed/salaries` **Lever** - `/lever/jobs` - `/lever/jobs/search` **Mynavi** - `/mynavi/companies` - `/mynavi/companies/jobs` - `/mynavi/jobs` - `/mynavi/jobs/search` **Naukri** - `/naukri/jobs` - `/naukri/jobs/search` **Reed** - `/reed/companies` - `/reed/jobs` - `/reed/jobs/search` - `/reed/jobs/similar` **RemoteOK** - `/remoteok/jobs` - `/remoteok/jobs/search` **Rikunabi** - `/rikunabi/companies` - `/rikunabi/jobs` - `/rikunabi/jobs/search` **Seek** - `/seek/jobs` - `/seek/jobs/search` **SimplyHired** - `/simplyhired/jobs` - `/simplyhired/jobs/search` **SmartRecruiters** - `/smartrecruiters/jobs` - `/smartrecruiters/jobs/search` **StepStone** - `/stepstone/jobs` - `/stepstone/jobs/search` **SUUMO** - `/suumo/companies` - `/suumo/companies/search` - `/suumo/listings/averages` - `/suumo/projects` - `/suumo/projects/search` **Totaljobs** - `/totaljobs/companies` - `/totaljobs/companies/jobs` - `/totaljobs/jobs` - `/totaljobs/jobs/search` - `/totaljobs/jobs/similar` **Wantedly** - `/wantedly/companies` - `/wantedly/companies/members` - `/wantedly/companies/projects` - `/wantedly/companies/similar` - `/wantedly/companies/stories` - `/wantedly/projects` - `/wantedly/projects/search` **We Work Remotely** - `/weworkremotely/companies` - `/weworkremotely/jobs` - `/weworkremotely/jobs/search` **Welcome to the Jungle** - `/wttj/companies` - `/wttj/companies/jobs` - `/wttj/companies/search` - `/wttj/jobs` - `/wttj/jobs/related` - `/wttj/jobs/search` **Workable** - `/workable/jobs` - `/workable/jobs/finder` - `/workable/jobs/search` **Workday** - `/workday/jobs` - `/workday/jobs/search` **ZipRecruiter** - `/ziprecruiter/companies` - `/ziprecruiter/companies/jobs` - `/ziprecruiter/jobs` - `/ziprecruiter/jobs/search` **Discogs** - `/discogs/artists` - `/discogs/artists/releases` - `/discogs/labels` - `/discogs/labels/releases` - `/discogs/marketplace/stats` - `/discogs/masters` - `/discogs/masters/versions` - `/discogs/releases` - `/discogs/search` **HeadHunter** - `/hh/areas` - `/hh/dictionaries` - `/hh/employers` - `/hh/employers/search` - `/hh/employers/vacancies` - `/hh/industries` - `/hh/professional_roles` - `/hh/resumes/search` - `/hh/vacancies` - `/hh/vacancies/search` - `/hh/vacancies/similar` **Improved stability & reliability:** Database **Facebook** - `/facebook/marketplace/listings` - `/facebook/marketplace/listings/category` - `/facebook/marketplace/listings/search` **TikTok** - `/tiktok/products` - `/tiktok/products/reviews` - `/tiktok/products/search` **Vinted** - `/vinted/products/search` - `/vinted/users` - `/vinted/users/feedbacks` - `/vinted/users/items` **Improved stability & reliability:** LinkedIn **Al Jazeera** - `/aljazeera/articles` - `/aljazeera/articles/search` - `/aljazeera/authors` - `/aljazeera/authors/articles` - `/aljazeera/categories/articles` **Albert Heijn** - `/ah/products` - `/ah/products/search` **arXiv** - `/arxiv/papers` - `/arxiv/papers/search` **Cerlive** - `/cerlive/exchanges` - `/cerlive/exchanges/search` - `/cerlive/tokens` - `/cerlive/tokens/search` - `/cerlive/wallets` - `/cerlive/wallets/search` **CoinGecko** - `/coingecko/coins` - `/coingecko/coins/chart` - `/coingecko/coins/markets` - `/coingecko/coins/search` - `/coingecko/coins/tickers` - `/coingecko/exchanges` - `/coingecko/exchanges/search` **CoinMarketCap** - `/coinmarketcap/coins` - `/coinmarketcap/coins/chart` - `/coinmarketcap/coins/pairs` - `/coinmarketcap/coins/search` - `/coinmarketcap/coins/spotlight` - `/coinmarketcap/exchanges` - `/coinmarketcap/exchanges/search` - `/coinmarketcap/global_metrics` **crt.sh** - `/crtsh/certificates` - `/crtsh/certificates/search` **DeFiLlama** - `/defillama/chains/history` - `/defillama/chains/search` - `/defillama/dexs/search` - `/defillama/fees` - `/defillama/fees/search` - `/defillama/pools/search` - `/defillama/prices` - `/defillama/protocols` - `/defillama/protocols/search` - `/defillama/stablecoins` - `/defillama/stablecoins/search` **Epic Games** - `/epicgames/games` - `/epicgames/games/addons` - `/epicgames/games/free` - `/epicgames/games/reviews` - `/epicgames/games/search` - `/epicgames/sellers` **FINMA** - `/finma/intermediaries` - `/finma/intermediaries/persons` - `/finma/intermediaries/search` - `/finma/warnings` - `/finma/warnings/search` **GitHub** - `/github/commits` - `/github/issues` - `/github/issues/search` - `/github/orgs` - `/github/orgs/repos` - `/github/pulls` - `/github/repos/commits` - `/github/repos/contributors` - `/github/repos/issues` - `/github/repos/pulls` - `/github/repos/releases` - `/github/users` - `/github/users/repos` - `/github/users/search` **GitLab** - `/gitlab/groups` - `/gitlab/projects` - `/gitlab/projects/releases` - `/gitlab/projects/search` - `/gitlab/projects/tags` - `/gitlab/users` **Google Scholar** - `/googlescholar/authors` - `/googlescholar/papers/search` **Hacker News** - `/hackernews/items` - `/hackernews/items/comments` - `/hackernews/items/lists` - `/hackernews/items/search` - `/hackernews/users` **itch.io** - `/itchio/collections` - `/itchio/games` - `/itchio/games/comments` - `/itchio/games/search` - `/itchio/users` **Jumbo** - `/jumbo/products` - `/jumbo/products/search` **Kaggle** - `/kaggle/datasets` - `/kaggle/datasets/search` - `/kaggle/models` - `/kaggle/models/search` **Medium** - `/medium/posts` - `/medium/posts/responses` - `/medium/posts/search` - `/medium/publications` - `/medium/publications/posts` - `/medium/publications/search` - `/medium/tags/posts` - `/medium/users` - `/medium/users/posts` - `/medium/users/search` **note** - `/note/creators` - `/note/creators/contents` - `/note/creators/search` - `/note/notes` - `/note/notes/likes` - `/note/notes/search` **OFAC** - `/ofac/parties` - `/ofac/parties/list` - `/ofac/parties/search` **OpenSanctions** - `/opensanctions/datasets` - `/opensanctions/datasets/search` - `/opensanctions/entities` - `/opensanctions/entities/search` - `/opensanctions/entities/statements` **RDAP** - `/rdap/autnums` - `/rdap/domains` - `/rdap/entities` - `/rdap/ips` - `/rdap/nameservers` **SAM.gov** - `/samgov/entities` - `/samgov/entities/search` - `/samgov/exclusions` - `/samgov/exclusions/search` - `/samgov/opportunities` - `/samgov/opportunities/search` **Semantic Scholar** - `/semanticscholar/authors` - `/semanticscholar/authors/search` - `/semanticscholar/papers` - `/semanticscholar/papers/search` **Stack Exchange** - `/stackexchange/answers` - `/stackexchange/questions` - `/stackexchange/questions/answers` - `/stackexchange/questions/comments` - `/stackexchange/questions/search` - `/stackexchange/tags` - `/stackexchange/users` - `/stackexchange/users/answers` - `/stackexchange/users/questions` **Steam** - `/steam/apps` - `/steam/apps/reviews` - `/steam/apps/search` - `/steam/packages` **SteamDB** - `/steamdb/apps` - `/steamdb/apps/patches` - `/steamdb/apps/search` - `/steamdb/charts` - `/steamdb/promotions` - `/steamdb/sales` **Substack** - `/substack/posts` - `/substack/posts/comments` - `/substack/posts/search` - `/substack/publications` - `/substack/users` **TED** - `/ted/notices` - `/ted/notices/search` **USAspending** - `/usaspending/agencies` - `/usaspending/agencies/search` - `/usaspending/autocomplete` - `/usaspending/awards` - `/usaspending/awards/funding` - `/usaspending/awards/search` - `/usaspending/awards/search/count` - `/usaspending/awards/subawards` - `/usaspending/awards/transactions` - `/usaspending/recipients` - `/usaspending/recipients/search` **Improved stability & reliability:** Amazon **Apify** - `/apify/actors` - `/apify/actors/search` **APKPure** - `/apkpure/apps` - `/apkpure/apps/charts` - `/apkpure/apps/reviews` - `/apkpure/apps/search` - `/apkpure/apps/versions` **App Store** - `/appstore/apps` - `/appstore/apps/charts` - `/appstore/apps/reviews` - `/appstore/apps/search` - `/appstore/developers` **Google** - `/google/play/apps` - `/google/play/apps/charts` - `/google/play/apps/reviews` - `/google/play/apps/search` - `/google/play/developers` **Microsoft Store** - `/microsoftstore/apps` - `/microsoftstore/apps/listings` - `/microsoftstore/apps/related` - `/microsoftstore/apps/reviews` - `/microsoftstore/apps/reviews/summary` - `/microsoftstore/apps/search` **Improved stability & reliability:** Best Buy, KRS, Siemens, Stooq **Handelsregister** - `/handelsregister/announcements` - `/handelsregister/companies` - `/handelsregister/companies/branches` - `/handelsregister/companies/documents` - `/handelsregister/companies/publications` - `/handelsregister/companies/search` - `/handelsregister/financial_reports` **Houjin Bangou** - `/houjinbangou/companies` - `/houjinbangou/companies/search` **Pappers** - `/pappers/companies/graph` **Improved stability & reliability:** Infogreffe, Stooq **Agoda** - `/agoda/destinations/search` - `/agoda/hotels` - `/agoda/hotels/prices` - `/agoda/hotels/reviews` - `/agoda/hotels/rooms` - `/agoda/hotels/search` **Airbnb** - `/airbnb/hosts` - `/airbnb/listings` - `/airbnb/listings/availability` - `/airbnb/listings/reviews` - `/airbnb/listings/search` **Coolblue** - `/coolblue/categories` - `/coolblue/categories/products` - `/coolblue/products` - `/coolblue/products/reviews` - `/coolblue/products/search` - `/coolblue/products/specifications` **Expedia** - `/expedia/hotels` - `/expedia/hotels/offers` - `/expedia/hotels/reviews` - `/expedia/hotels/search` - `/expedia/regions/search` **GetYourGuide** - `/getyourguide/activities` - `/getyourguide/activities/reviews` - `/getyourguide/activities/search` - `/getyourguide/locations` - `/getyourguide/locations/search` - `/getyourguide/suppliers` **Google** - `/google/flights/calendar` - `/google/flights/search` - `/google/hotels` - `/google/hotels/nearby` - `/google/hotels/photos` - `/google/hotels/prices` - `/google/hotels/reviews` - `/google/hotels/search` **Hostelworld** - `/hostelworld/cities/search` - `/hostelworld/properties` - `/hostelworld/properties/availability` - `/hostelworld/properties/events` - `/hostelworld/properties/reviews` - `/hostelworld/properties/reviews/summary` - `/hostelworld/properties/search` **Infogreffe** - `/infogreffe/companies` - `/infogreffe/companies/establishments` - `/infogreffe/companies/financials` - `/infogreffe/companies/insolvency` - `/infogreffe/companies/officers` - `/infogreffe/companies/registrations` - `/infogreffe/companies/search` - `/infogreffe/officers/appointments` - `/infogreffe/officers/search` **Jalan** - `/jalan/areas` - `/jalan/hotels` - `/jalan/hotels/plans` - `/jalan/hotels/reviews` - `/jalan/hotels/search` **KRS** - `/krs/companies` - `/krs/companies/activities` - `/krs/companies/financials` - `/krs/companies/history` - `/krs/companies/representation` - `/krs/companies/search` - `/krs/companies/status` **ONRC** - `/onrc/companies` **Rakuten Travel** - `/rakuten_travel/areas` - `/rakuten_travel/hotels` - `/rakuten_travel/hotels/plans` - `/rakuten_travel/hotels/reviews` - `/rakuten_travel/hotels/search` **Sirene** - `/sirene/companies` - `/sirene/companies/nearby` - `/sirene/companies/officers` - `/sirene/companies/search` **Skyscanner** - `/skyscanner/flights/dates` - `/skyscanner/flights/prices/bands` - `/skyscanner/flights/prices/calendar` - `/skyscanner/flights/prices/months` - `/skyscanner/flights/search` - `/skyscanner/places/search` - `/skyscanner/stays/search` **Tianyancha** - `/tianyancha/companies` - `/tianyancha/companies/search` **Trip.com** - `/trip/destinations/search` - `/trip/hotels` - `/trip/hotels/photos` - `/trip/hotels/reviews` - `/trip/hotels/search` **Viator** - `/viator/attractions` - `/viator/destinations` - `/viator/products` - `/viator/products/reviews` - `/viator/products/search` **Zauba** - `/zauba/companies` - `/zauba/companies/charges` - `/zauba/companies/directors` - `/zauba/companies/search` - `/zauba/directors` - `/zauba/directors/search` **99acres** - `/acres99/projects` - `/acres99/projects/search` - `/acres99/properties` - `/acres99/properties/search` **Apartments.com** - `/apartments/listings` - `/apartments/listings/search` **AtHome** - `/athome/listings` - `/athome/listings/search` **Docker Hub** - `/dockerhub/organizations` - `/dockerhub/organizations/repositories` - `/dockerhub/repositories` - `/dockerhub/repositories/search` - `/dockerhub/repositories/tags` **Finviz** - `/finviz/groups` - `/finviz/insider_trades` - `/finviz/news` - `/finviz/quotes` - `/finviz/quotes/financials` - `/finviz/quotes/history` - `/finviz/screener` **Funda** - `/funda/agents` - `/funda/listings` - `/funda/listings/search` **Google** - `/google/finance/markets` - `/google/finance/quotes` - `/google/finance/quotes/congress` - `/google/finance/quotes/financials` - `/google/finance/quotes/history` - `/google/finance/quotes/news` - `/google/finance/quotes/ratings` - `/google/finance/quotes/related` - `/google/finance/quotes/transcripts` - `/google/finance/search` **idealo** - `/idealo/products` **Investing.com** - `/investing/economic_calendar` - `/investing/news` - `/investing/quotes` - `/investing/quotes/financials` - `/investing/quotes/search` - `/investing/quotes/technical` **Japan Exchange (JPX)** - `/jpx/equities/dividends` - `/jpx/equities/ex-rights` - `/jpx/equities/halted` - `/jpx/equities/index-returns` - `/jpx/equities/margin-trading` - `/jpx/equities/market-status` - `/jpx/equities/rankings` - `/jpx/indices` - `/jpx/listings/constituents` - `/jpx/listings/etf` - `/jpx/listings/reit` - `/jpx/listings/stocks` - `/jpx/statistics/investor-type` **Kakaku** - `/kakaku/products` - `/kakaku/products/offers` - `/kakaku/products/price-history` - `/kakaku/products/reviews` - `/kakaku/products/search` **LIFULL** - `/lifull/companies` - `/lifull/listings` - `/lifull/listings/reviews` - `/lifull/listings/search` **Macrotrends** - `/macrotrends/economic_data` - `/macrotrends/search` - `/macrotrends/stocks/annual-price` - `/macrotrends/stocks/financials` - `/macrotrends/stocks/price-history` **MarketWatch** - `/marketwatch/markets/overview` - `/marketwatch/news/search` - `/marketwatch/quotes` - `/marketwatch/quotes/history` - `/marketwatch/quotes/news` - `/marketwatch/quotes/search` - `/marketwatch/stocks/financials` **Morningstar** - `/morningstar/quotes` - `/morningstar/quotes/dividends` - `/morningstar/quotes/esg` - `/morningstar/quotes/financials` - `/morningstar/quotes/history` - `/morningstar/quotes/key-metrics` - `/morningstar/quotes/rating` - `/morningstar/quotes/returns` - `/morningstar/quotes/search` - `/morningstar/quotes/valuation` **NASDAQ** - `/nasdaq/ipos` - `/nasdaq/news` - `/nasdaq/quotes` - `/nasdaq/quotes/dividends` - `/nasdaq/quotes/earnings` - `/nasdaq/quotes/financials` - `/nasdaq/quotes/history` - `/nasdaq/quotes/screener` - `/nasdaq/quotes/search` **npm** - `/npm/orgs/packages` - `/npm/packages` - `/npm/packages/downloads` - `/npm/packages/search` **PyPI** - `/pypi/packages` - `/pypi/packages/files` - `/pypi/packages/releases` **Redfin** - `/redfin/properties` - `/redfin/properties/history` - `/redfin/properties/schools` - `/redfin/properties/search` **Rightmove** - `/rightmove/agents` - `/rightmove/agents/properties` - `/rightmove/locations/search` - `/rightmove/properties` - `/rightmove/properties/search` **Seeking Alpha** - `/seekingalpha/quotes` **SeLoger** - `/seloger/listings` - `/seloger/listings/search` **StockTwits** - `/stocktwits/messages/comments` - `/stocktwits/symbols` - `/stocktwits/symbols/search` - `/stocktwits/symbols/sentiment` - `/stocktwits/trending` - `/stocktwits/users` - `/stocktwits/users/search` **Stooq** - `/stooq/quotes` - `/stooq/quotes/history` - `/stooq/quotes/search` **SUUMO** - `/suumo/listings` - `/suumo/listings/search` - `/suumo/properties` - `/suumo/properties/search` **TradingView** - `/tradingview/earnings` - `/tradingview/ideas` - `/tradingview/news` - `/tradingview/quotes` - `/tradingview/quotes/documents` - `/tradingview/quotes/financials` - `/tradingview/quotes/news` - `/tradingview/quotes/performance` - `/tradingview/quotes/related` - `/tradingview/quotes/search` - `/tradingview/quotes/technicals` - `/tradingview/screener` **Trulia** - `/trulia/properties` - `/trulia/properties/search` **Zoopla** - `/zoopla/agents` - `/zoopla/properties` - `/zoopla/properties/history` - `/zoopla/properties/search` **Improved stability & reliability:** LinkedIn **BBB** - `/bbb/businesses` - `/bbb/businesses/complaints` - `/bbb/businesses/reviews` - `/bbb/businesses/search` **Comparably** - `/comparably/companies` - `/comparably/companies/reviews` - `/comparably/companies/salaries` - `/comparably/companies/search` **ConsumerAffairs** - `/consumeraffairs/brands` - `/consumeraffairs/brands/reviews` **kununu** - `/kununu/companies` - `/kununu/companies/reviews` - `/kununu/companies/salaries` - `/kununu/companies/search` **Sitejabber** - `/sitejabber/businesses` - `/sitejabber/businesses/reviews` - `/sitejabber/businesses/search` **Tabelog** - `/tabelog/restaurants` - `/tabelog/restaurants/reviews` - `/tabelog/restaurants/search` **TrustRadius** - `/trustradius/products` - `/trustradius/products/reviews` - `/trustradius/products/search` **Alibaba** - `/alibaba/products/search` **ASOS** - `/asos/categories/products` - `/asos/products` - `/asos/products/recommendations` - `/asos/products/reviews` - `/asos/products/search` **Best Buy** - `/bestbuy/categories` - `/bestbuy/products` - `/bestbuy/products/offers` - `/bestbuy/products/questions` - `/bestbuy/products/reviews` - `/bestbuy/products/search` **bol.com** - `/bol/categories/products` - `/bol/products` - `/bol/products/reviews` - `/bol/products/search` - `/bol/sellers` **Costco** - `/costco/categories/products` - `/costco/products` - `/costco/products/search` **eBay** - `/ebay/categories` - `/ebay/items` - `/ebay/items/search` - `/ebay/products` - `/ebay/products/reviews` - `/ebay/sellers` - `/ebay/sellers/feedback` - `/ebay/sellers/items` **Flipkart** - `/flipkart/products` - `/flipkart/products/reviews` - `/flipkart/products/search` - `/flipkart/sellers` **H&M** - `/hm/categories/products` - `/hm/products/search` **Newegg** - `/newegg/categories/products` - `/newegg/products` - `/newegg/products/offers` - `/newegg/products/reviews` - `/newegg/products/search` - `/newegg/sellers` - `/newegg/sellers/products` **Rakuten** - `/rakuten/categories` - `/rakuten/items` - `/rakuten/items/reviews` - `/rakuten/items/search` - `/rakuten/shops` - `/rakuten/shops/items` **Shopify** - `/shopify/collections` - `/shopify/collections/products` - `/shopify/products` - `/shopify/products/search` **Target** - `/target/categories/products` - `/target/products` - `/target/products/questions` - `/target/products/recommendations` - `/target/products/reviews` - `/target/products/search` **Trendyol** - `/trendyol/categories` - `/trendyol/products` - `/trendyol/products/reviews` - `/trendyol/products/sellers` - `/trendyol/sellers` - `/trendyol/sellers/products` **Walmart** - `/walmart/products` - `/walmart/products/reviews` - `/walmart/products/search` - `/walmart/sellers` - `/walmart/sellers/products` **Wayfair** - `/wayfair/products` - `/wayfair/products/reviews` - `/wayfair/products/search` - `/wayfair/sellers` **Yahoo Shopping** - `/yahoo_shopping/products` - `/yahoo_shopping/products/reviews` - `/yahoo_shopping/products/search` - `/yahoo_shopping/stores` - `/yahoo_shopping/stores/items` **Zalando** - `/zalando/brands/products` - `/zalando/products` - `/zalando/products/related` - `/zalando/products/search` **Zara** - `/zara/products` - `/zara/products/search` - `/zara/stores/search` **Improved stability & reliability:** LinkedIn, Product Hunt **Yahoo** - `/yahoo/finance/quotes` - `/yahoo/finance/quotes/history` - `/yahoo/finance/search` - `/yahoo/search/images` - `/yahoo/search/news` - `/yahoo/search/videos` - `/yahoo/search/web` **Companies House** - `/companies_house/companies` - `/companies_house/companies/charges` - `/companies_house/companies/filing_history` - `/companies_house/companies/officers` - `/companies_house/companies/pscs` - `/companies_house/companies/search` - `/companies_house/officers` - `/companies_house/officers/search` **GitHub** - `/github/repos` - `/github/repos/search` **Product Hunt** - `/producthunt/categories` - `/producthunt/categories/list` - `/producthunt/collections` - `/producthunt/collections/search` - `/producthunt/forums/search` - `/producthunt/forums/threads` - `/producthunt/launches` - `/producthunt/launches/comments` - `/producthunt/launches/search` - `/producthunt/leaderboards` - `/producthunt/products/alternatives` - `/producthunt/products/customers` - `/producthunt/products/launches` - `/producthunt/topics` - `/producthunt/users` - `/producthunt/users/collections` - `/producthunt/users/comments` - `/producthunt/users/launches` - `/producthunt/users/stacks` - `/producthunt/users/upvotes` **Reddit** - `/reddit/search/subreddits` - `/reddit/search/users` - `/reddit/subreddits` - `/reddit/subreddits/popular` - `/reddit/subreddits/posts` **YouTube** - `/youtube/channel/playlists` - `/youtube/channel/posts` - `/youtube/channel/shorts` - `/youtube/channel/streams` - `/youtube/playlist` - `/youtube/playlist/videos` - `/youtube/search/playlists` **Facebook** - `/facebook/ads` - `/facebook/ads/search` - `/facebook/advertisers` - `/facebook/advertisers/ads` - `/facebook/advertisers/search` **Google** - `/google/ads` - `/google/advertisers` - `/google/advertisers/ads` - `/google/advertisers/search` **OpenCorporates** - `/opencorporates/companies` - `/opencorporates/companies/search` **Reddit** - `/reddit/user` **Improved stability & reliability:** Amazon, Capterra, Crunchbase, DuckDuckGo, G2, Instagram, LinkedIn, Mercari, Product Hunt, SEC, TikTok, Twitter / X, Web Parser, Y Combinator, YouTube **Google** - `/google/maps/photos` - `/google/maps/places` - `/google/maps/places/search` - `/google/maps/reviews` - `/google/maps/users` - `/google/maps/users/reviews` **TikTok** - `/tiktok/users` - `/tiktok/users/videos` - `/tiktok/videos` - `/tiktok/videos/comments` - `/tiktok/videos/search` **YouTube** - `/youtube/channel` - `/youtube/search/channels` **Improved stability & reliability:** LinkedIn **Amazon** - `/amazon/products` - `/amazon/products/offers` - `/amazon/products/search` - `/amazon/sellers` - `/amazon/sellers/products` **Improved stability & reliability:** LinkedIn **Capterra** - `/capterra/products` - `/capterra/products/reviews` **G2** - `/g2/products/search` **Product Hunt** - `/producthunt/products` - `/producthunt/products/reviews` - `/producthunt/products/search` **Capterra** - `/capterra/products/search` **Mercari** - `/mercari/items` - `/mercari/items/search` **Database** - `/db/linkedin/sql/companies` **LinkedIn** - `/linkedin/job` **LinkedIn** - `/linkedin/user/find_email_by_url` **Crunchbase** - `/crunchbase/db/search` **Improved stability & reliability:** LinkedIn, Twitter / X **Crunchbase** - `/crunchbase/search` **Improved stability & reliability:** LinkedIn **Crunchbase** - `/crunchbase/company` **Siemens** - `/siemens/search/partners` - `/siemens/search/partners/digital` **YouTube** - `/youtube/channel/videos` - `/youtube/video/comments` **YouTube** - `/youtube/search/videos` - `/youtube/video` - `/youtube/video/subtitles` **SEC** - `/sec/document` - `/sec/search/companies` **Reddit** - `/reddit/user/comments` - `/reddit/user/posts` **Y Combinator** - `/yc/company` - `/yc/search/companies` - `/yc/search/founders` **DuckDuckGo** - `/duckduckgo/search` **Improved stability & reliability:** LinkedIn **Reddit** - `/reddit/posts` - `/reddit/posts/comments` **Web Parser** - `/webparser/parse` - `/webparser/sitemap` **Improved stability & reliability:** LinkedIn **Database** - `/db/linkedin/email` **Instagram** - `/instagram/post` **Instagram** - `/instagram/search/posts` - `/instagram/user/reels` **Database** - `/db/linkedin/sql/user` **Instagram** - `/instagram/post/comments` - `/instagram/user` - `/instagram/user/posts` **LinkedIn** - `/linkedin/post/comments` - `/linkedin/user/comments` **Reddit** - `/reddit/search/posts` **LinkedIn** - `/linkedin/search/posts` **LinkedIn** - `/linkedin/company/employee_stats` **Twitter / X** - `/twitter/search/posts` - `/twitter/search/users` **Twitter / X** - `/twitter/user` - `/twitter/user/posts` **LinkedIn** - `/linkedin/post/reposts` **LinkedIn** - `/linkedin/sales_navigator_search/users` **LinkedIn** - `/linkedin/google/company` First public release of the Anysite API. **LinkedIn** - `/linkedin/company` - `/linkedin/company/employees` - `/linkedin/company/posts` - `/linkedin/email/user` - `/linkedin/group` - `/linkedin/post` - `/linkedin/post/comments` - `/linkedin/post/reactions` - `/linkedin/search/companies` - `/linkedin/search/educations` - `/linkedin/search/industries` - `/linkedin/search/jobs` - `/linkedin/search/locations` - `/linkedin/search/users` - `/linkedin/user` - `/linkedin/user/certificates` - `/linkedin/user/education` - `/linkedin/user/endorsers` - `/linkedin/user/experience` - `/linkedin/user/honors` - `/linkedin/user/languages` - `/linkedin/user/patents` - `/linkedin/user/posts` - `/linkedin/user/reactions` - `/linkedin/user/skills` --- # Claude Code Skills #### GitHub Repository Source code, skill documentation, and contributions — MIT licensed ## Overview Agent Skills are specialized workflows that extend AI coding assistants with ready-made data extraction and analysis capabilities. Each skill combines multiple Anysite MCP tools into a focused workflow — lead generation, competitor research, person intelligence, and more. Skills work with **Claude Code**, **Cursor**, **Windsurf**, and any AI tool that supports MCP or markdown context. **Key points:** - Zero configuration — no API tokens or `.env` files needed - Authentication handled at the MCP server level - 13 skills covering sales, marketing, recruiting, investing, and security - Immediate results via synchronous MCP tool calls > **Prerequisite:** Anysite MCP Server must be installed and configured. See [MCP Server setup](/docs/mcp-server/tools) for instructions. ## Installation ### Claude Code ```bash # Add the skills marketplace /plugin marketplace add https://github.com/anysiteio/agent-skills # Install a specific skill /plugin install anysite-lead-generation@anysite-skills ``` After installation, skills are automatically available — just describe what you need in natural language. ### Cursor / Windsurf Add to your project's `.cursor/settings.json` or use the same plugin format as Claude Code. ### Other AI Tools Any AI tool that supports markdown context can use skills by pointing to: - `skills/*/SKILL.md` — individual skill documentation - `.claude-plugin/marketplace.json` — skill metadata ### Quick Preview Run this to see all available skills and installation instructions: ```bash npx @anysiteio/agent-skills ``` ## Available Skills ### Sales & Lead Generation #### Lead Generation **`anysite-lead-generation`** Find and enrich prospects with LinkedIn search, email discovery, and contact extraction from websites. Build qualified prospect lists for sales, recruiting, and business development. **Platforms:** LinkedIn, Web #### Person Analyzer **`anysite-person-analyzer`** Deep multi-platform intelligence combining LinkedIn profile, posts, activity, Twitter/X, Reddit, GitHub, and web presence. Perfect for networking, sales, partnerships, and recruitment. **Platforms:** LinkedIn, Twitter/X, Reddit, GitHub, Web ### Competitive Intelligence #### Competitor Intelligence **`anysite-competitor-intelligence`** Track competitors across LinkedIn, social media, Y Combinator, and the web. Analyze hiring patterns, monitor content strategies, and benchmark market positioning. **Platforms:** LinkedIn, Twitter/X, Y Combinator, Web #### Competitor Analyzer **`anysite-competitor-analyzer`** Comprehensive competitive intelligence combining web scraping, LinkedIn analysis, social media monitoring, leadership profiling, GitHub review, and community sentiment tracking. **Platforms:** LinkedIn, Twitter/X, Reddit, GitHub, Web ### Marketing & Social Media #### Influencer Discovery **`anysite-influencer-discovery`** Discover and analyze influencers across Instagram, Twitter/X, LinkedIn, and YouTube. Evaluate engagement metrics, audience quality, and partnership opportunities. **Platforms:** Instagram, Twitter/X, LinkedIn, YouTube #### Content Analytics **`anysite-content-analytics`** Track post performance, engagement metrics, and content strategy effectiveness across multiple platforms. **Platforms:** Instagram, YouTube, LinkedIn, Twitter/X, Reddit #### Brand Reputation **`anysite-brand-reputation`** Monitor brand mentions, sentiment, and social conversations. Track customer feedback and identify reputation risks. **Platforms:** Twitter/X, Reddit, Instagram, YouTube, LinkedIn #### Audience Analysis **`anysite-audience-analysis`** Analyze audience demographics, engagement patterns, and follower behavior. **Platforms:** Instagram, YouTube, LinkedIn ### Research & Analysis #### Trend Analysis **`anysite-trend-analysis`** Detect emerging trends and viral content. Monitor topic momentum, trending hashtags, and market shifts. **Platforms:** Twitter/X, Reddit, YouTube, LinkedIn, Instagram #### Market Research **`anysite-market-research`** Analyze tech markets, research startup ecosystems via Y Combinator, study public companies through SEC filings, and gather market intelligence. **Platforms:** Y Combinator, SEC, LinkedIn, Twitter/X, Web #### VC Analyst **`anysite-vc-analyst`** Investor research and outreach agent. Score investors by stage fit and thesis alignment, detect portfolio conflicts, generate personalized outreach messages. **Platforms:** LinkedIn, Y Combinator, Web ### Developer Tools #### Anysite CLI **`anysite-cli`** Command-line tool operator for data extraction, batch processing, dataset pipelines, scheduling, and database operations via Anysite CLI. **Docs:** [CLI Documentation](/docs/cli/overview) #### Skill Audit **`skill-audit`** Static security auditor for Claude Code skills. Detects hooks, prompt injection, and dangerous permissions in skill files. ## Usage Examples After installing a skill, just describe what you need: ``` "Find 20 sales prospects in San Francisco who work in SaaS companies" → anysite-lead-generation "Analyze my competitor's LinkedIn page and recent posts" → anysite-competitor-intelligence "Find Instagram influencers in sustainable fashion with 10k-100k followers" → anysite-influencer-discovery "Research this person's LinkedIn and Twitter activity" → anysite-person-analyzer "Evaluate this investor for our seed round" → anysite-vc-analyst "What's trending on Twitter about AI agents this week?" → anysite-trend-analysis ``` ## Output Formats All skills support three output formats: | Format | Use case | |--------|----------| | **Chat Summary** (default) | Natural language insights directly in conversation | | **CSV Export** | Structured data for spreadsheets and CRM import | | **JSON Export** | Raw data for programmatic processing | ## How It Works ``` Your AI Assistant (Claude Code / Cursor / Windsurf) ↓ Anysite Agent Skills (workflow + analysis logic) ↓ Anysite MCP Server (authentication + API calls) ↓ Platform APIs (LinkedIn, Instagram, Twitter, etc.) ``` Skills provide structured workflows and analysis frameworks. The MCP server handles all authentication and API communication. No API tokens or environment variables needed in your project. ## Platform Coverage | Platform | Tools | Primary Use Cases | |----------|-------|-------------------| | **LinkedIn** | 30+ | B2B leads, company research, employee discovery, email finding | | **Instagram** | 8 | Influencer discovery, content analytics, audience analysis | | **Twitter/X** | 4 | Trend analysis, sentiment monitoring, user research | | **Reddit** | 5 | Community insights, sentiment, market research | | **YouTube** | 5 | Content analytics, channel research, comment analysis | | **Y Combinator** | 3 | Startup research, founder discovery, batch analysis | | **SEC** | 2 | Public company filings, financial data | | **Web Scraping** | 3 | Contact extraction, sitemap parsing, general web data | ## Next Steps #### MCP Server Tools Browse all 65+ MCP tools that power the skills #### MCP Unlimited Plan Unlimited MCP requests for $30/month #### Person Analyzer Guide Deep-dive into the Person Analyzer skill #### GitHub Repository Source code, issues, and contributions --- # Competitor Analyzer Skill ## What is Competitor Analyzer? The **Competitor Analyzer** skill is a systematic framework for gathering and analyzing competitive intelligence using Anysite MCP tools. It combines web scraping, LinkedIn data, social media monitoring, leadership analysis, GitHub activity, and community insights to create comprehensive competitor profiles. ## Prerequisites Before using this skill, ensure you have: #### Install Anysite MCP Server The Competitor Analyzer skill requires Anysite MCP Server with active subscription #### Learn About Skills New to Claude Desktop Skills? Read the complete guide on how to install and use skills ## Download Competitor Analyzer Skill #### Download Competitor Analyzer Skill Click to download the Competitor Analyzer skill file ### Installation 1. **Download** the skill file using the button above 2. **Upload** to Claude Desktop (drag and drop or use upload button) 3. **Skill is ready** - Start analyzing competitors immediately ## Overview The Competitor Analyzer skill performs multi-source competitive intelligence gathering: - **Web Presence** - Homepage, pricing, documentation, and product pages - **LinkedIn Intelligence** - Company profile, team growth, leadership, content strategy - **Deep Social Intelligence** - 300+ Twitter tweets across 4 layers, 300-500 Reddit posts across 5 layers, cross-platform sentiment analysis - **Leadership Analysis** - Founders and C-level profiles, activity, thought leadership - **Technical Discovery** - GitHub presence, API documentation, integration ecosystem - **Alternative Data** - Glassdoor reviews, employee sentiment, hiring signals - **Strategic Synthesis** - SWOT analysis, competitive positioning, actionable insights, trust scoring ## Deep Social Intelligence The skill includes advanced Twitter and Reddit research capabilities for comprehensive social media analysis. ### Twitter Intelligence (Layer 1-4) #### Layer 1: Company Account Deep Dive - **100 posts analyzed** for comprehensive content strategy - Content mix analysis (product/thought leadership/engagement %) - Engagement rate tracking - Best performing content identification - Response time patterns #### Layer 2: Leadership Twitter Intelligence - Founder/CEO Twitter presence analysis - Personal brand strength assessment - Technical credibility evaluation - Thought leadership quality scoring - **Founder archetypes classification:** - **The Builder** - Technical focus - **The Evangelist** - Industry leader - **The Engager** - Community-focused - **The Silent** - Minimal presence #### Layer 3: Brand Mentions & Sentiment **300+ tweets analyzed:** - 100 positive signals ("love", "great", "recommend") - 100 negative signals ("problem", "bug", "expensive") - 100+ competitive mentions ("vs", "alternative") **Sentiment Scoring:** ``` Score = (positive - negative) / total Range: -1.0 to +1.0 > 0.3: Very positive 0.1 to 0.3: Positive -0.1 to 0.1: Neutral/Mixed -0.3 to -0.1: Negative < -0.3: Very negative ``` #### Layer 4: Customer Voice Analysis - Real user mentions analysis - Power users identification - Success stories extraction - Pain points detection - Feature requests mapping - Support quality assessment ### Deep Reddit Research (Layer 1-5) #### Layer 1: Multi-Subreddit Mapping **Targeted search across 6-10 relevant subreddits:** - r/SaaS, r/startups, r/webdev, r/programming - r/nocode, r/automation, and more **50 mentions per subreddit = 300-500 total Reddit mentions** #### Layer 2: Competitive Intelligence - Direct "vs" comparisons (100 mentions) - "Alternative to" searches (100 mentions) - "Better than" queries (50 mentions) - Problem space research #### Layer 3: Deep Thread Analysis **High-value threads identification:** - Threads with 20+ comments - Posts with 50+ upvotes - Full discussion retrieval with comments - Technical depth analysis - User experience insights extraction #### Layer 4: Sentiment Classification **Positive indicators:** - "I love [tool]", "Best [category]" - "Highly recommend" - User-created tutorials **Negative indicators:** - "Waste of money", "Switched away" - "Constant issues" **Churn signals:** - "Cancelling subscription" - "Not worth the price" - "Moving to [competitor]" #### Layer 5: Community Health Metrics **Metrics calculated:** ``` awareness_score = total_mentions × unique_subreddits health_score = positive_ratio × community_help ``` Tracks community vitality and organic growth ### Cross-Platform Intelligence Synthesis **New capability:** Compare Twitter vs Reddit insights to identify authenticity gaps: | Aspect | Twitter | Reddit | Intelligence Value | |--------|---------|--------|-------------------| | **Authenticity** | Mixed (marketing + real) | High (anonymous honesty) | Truth detection | | **Depth** | Surface-level | Deep technical | Real problems | | **Speed** | Real-time | Slower, considered | Trend timing | | **Sentiment** | More positive | More honest | Reality check | | **Best For** | Brand monitoring | True insights | Combined view | **Pattern Recognition Examples:** #### Marketing vs Reality **Twitter:** All positive, high engagement **Reddit:** Mixed reviews, specific complaints **→ Signal:** Strong marketing, product gaps exist #### Organic Growth **Twitter:** Moderate following, real conversations **Reddit:** Many mentions, users helping users **→ Signal:** True product-market fit #### Support Theater **Twitter:** Quick responses, surface fixes **Reddit:** Unresolved complaints, workarounds **→ Signal:** Support theater vs real problems #### Community Love **Twitter:** Genuine praise, power users active **Reddit:** Advocates defending, tutorials **→ Signal:** Strong community, loyal users **Combined Sentiment Formula:** ```python # Reddit weighted 70% (more authentic) combined_sentiment = (twitter_sentiment × 0.3) + (reddit_sentiment × 0.7) # Consistency check consistency = 1 - abs(twitter_sentiment - reddit_sentiment) # Final trust score trust_score = combined_sentiment × consistency ``` **Trust Score Interpretation:** - **High (> 0.6):** Consistent positive across platforms - **Medium (0.3-0.6):** Mixed or inconsistent feedback - **Low (< 0.3):** Negative or fake positive signals ### Social Intelligence Metrics The skill analyzes comprehensive social media data: | Data Source | Volume Analyzed | Intelligence Type | |-------------|-----------------|-------------------| | **Twitter posts** | 100+ company posts | Content strategy, engagement patterns | | **Twitter mentions** | 300+ brand mentions | Sentiment, customer voice, competitive | | **Reddit posts** | 300-500 mentions | Community discussions, authentic feedback | | **Reddit threads** | 5-10 deep dives | Technical insights, user experiences | | **Subreddits** | 6-10 communities | Market awareness, niche presence | | **Sentiment analysis** | Formula-based scoring | Trust score, authenticity assessment | | **Total social data** | **~800 data points** | **Comprehensive social intelligence** | ## Usage Examples ### Quick Competitor Scan For rapid competitive assessment: ``` Analyze our competitor Acme Corp (acme.com) Focus on pricing and positioning ``` ### Deep Competitive Intelligence For comprehensive analysis: ``` Do a deep competitive analysis of TechCo I need to understand their: - Leadership team and founders - Product positioning - Pricing strategy - Technical capabilities - Market threats they pose ``` ### Pricing-Focused Analysis When you need pricing intelligence: ``` Analyze competitor pricing for CloudService Inc Compare their tiers, unit economics, and free tier limits ``` ### Leadership Team Research For founder and executive intelligence: ``` Research the founding team and C-level executives at StartupX Analyze their backgrounds, thought leadership, and public presence ``` ### Battle Card Creation For sales team enablement: ``` Create a competitive battle card for CompanyY Focus on feature comparison, pricing, and win/loss scenarios ``` ### Deep Twitter Intelligence For brand and community analysis: ``` Analyze Twitter presence for Firecrawl: - What does the company post? - What do founders share? - What are users saying? - What's the overall sentiment? ``` ### Reddit Community Deep Dive For authentic customer insights: ``` Do deep Reddit research on Browse.ai: - Which subreddits mention them? - What are top discussions about? - What pain points do users report? - How do they compare with competitors? ``` ### Cross-Platform Sentiment Analysis For authenticity assessment: ``` Compare Twitter vs Reddit sentiment for Apify Are reviews consistent? Where's the truth? ``` ### Customer Voice Analysis For real user experiences: ``` Find real customer experiences with Firecrawl on Twitter and Reddit What works? What doesn't? Why do people churn? ``` ## Analysis Depths The skill supports three levels of analysis depth: #### Quick Assessment **3-5 minutes** - Homepage & pricing scrape - LinkedIn company profile - Recent social posts (20 total) - Core sections only - Brief summary (1 page) #### Deep Intelligence **5-10 minutes** (Default) - Full web presence (7-10 pages) - Complete LinkedIn intelligence - Social media deep dive (50-100 posts) - Community sentiment analysis - Technical documentation review - Detailed markdown report #### Specialized Focus **3-7 minutes** - **Pricing Focus**: Tier structures, unit economics, strategy - **Leadership Focus**: Founder profiles, thought leadership - **Technical Focus**: API docs, GitHub, integrations - **Battle Card**: Head-to-head comparison ## Key Features ### Multi-Phase Intelligence Gathering The skill uses a systematic 6-phase approach: #### Phase 1: Foundation Web presence reconnaissance - homepage, pricing, about pages, core messaging #### Phase 2: LinkedIn Intelligence Company profile, team analysis, employee growth signals, content strategy #### Phase 3: Deep Social & Community Research Twitter Layer 1-4 (300+ tweets), Reddit Layer 1-5 (300-500 posts), cross-platform synthesis, advanced sentiment scoring #### Phase 4: Leadership Intelligence Founder/C-level profiles, career history, personal brand, thought leadership #### Phase 5: Technical Discovery Documentation quality, GitHub presence, API capabilities, integration ecosystem #### Phase 6: Strategic Synthesis SWOT analysis, competitive positioning, actionable insights, watch areas ### Comprehensive Data Sources The skill gathers intelligence from multiple channels: #### Web Scraping - Homepage and product pages - Pricing and plans - Documentation and API reference - Integration marketplace - About and company pages #### LinkedIn Data - Company profile and metrics - Employee count and growth - Job postings and hiring signals - Leadership team identification - Content and posting strategy - Engagement patterns #### Social Media - Twitter presence and activity - Reddit mentions and sentiment - Community discussions - Customer complaints and praise - Feature requests #### Leadership Intelligence - Founder and C-level profiles - Career history and expertise - Personal posting activity - Thought leadership quality - Public credibility signals - Network influence #### Technical Signals - GitHub organization and repos - Open source presence - Star and fork counts - Development velocity - API documentation quality - SDK availability #### Alternative Data - Glassdoor employee reviews - CEO approval ratings - Salary ranges - Interview difficulty - Work-life balance scores ### Strategic Analysis Framework The skill synthesizes data into actionable insights: #### SWOT Analysis - **Strengths**: What they do well - **Weaknesses**: Where they struggle - **Opportunities**: What you can exploit - **Threats**: What you need to watch #### Positioning Assessment - Market positioning - Value proposition analysis - Differentiation strategy - Target customer segments #### Competitive Intelligence - Pricing strategy - Feature comparison - GTM approach - Growth signals #### Strategic Insights - Key takeaways (3-5 bullets) - Competitive threats (2-3 bullets) - Opportunities to exploit (3-5 bullets) - Watch areas for monitoring ## Analysis Phases in Detail ### Phase 1: Foundation (15-20 min) **Data Collection:** - Homepage messaging and positioning - Pricing structure and tiers - Company background and history - Core features and capabilities **Tools Used:** - `parse_webpage` - Web scraping for key pages - `get_sitemap` - Site structure discovery **Output:** - Positioning statement - Feature list - Pricing model - Company overview ### Phase 2: LinkedIn Intelligence (10-15 min) **Data Collection:** - Company profile and metrics - Employee count and growth trends - Leadership team identification - Content and posting strategy **Tools Used:** - `search_linkedin_companies` - Find company profile - `get_linkedin_company` - Detailed company data - `get_linkedin_company_employees` - Team analysis - `get_linkedin_company_posts` - Content strategy **Output:** - Team size and growth rate - Hiring signals - Content themes and frequency - Engagement levels ### Phase 3: Deep Social & Community Research (20-30 min) **Data Collection:** - **Twitter Layer 1-4:** Company account, leadership, mentions, customer voice (300+ tweets) - **Reddit Layer 1-5:** Multi-subreddit mapping, competitive intel, deep threads (300-500 posts) - **Cross-platform synthesis:** Pattern recognition and authenticity assessment - **Sentiment scoring:** Formula-based analysis with trust scores **Tools Used:** - `get_twitter_user` - Profile and metrics - `get_twitter_user_posts` - Activity analysis (100 posts) - `search_twitter_posts` - Multi-layer mention tracking (300+ tweets) - `search_reddit_posts` - Multi-subreddit intelligence (300-500 posts) - `get_reddit_post_comments` - Deep thread analysis **Output:** - **Social reach:** Followers, engagement rates, community size - **Advanced sentiment:** Twitter score, Reddit score, combined trust score - **Customer voice:** Real experiences, success stories, pain points - **Competitive positioning:** How they're compared to alternatives - **Community health:** Awareness score, health metrics, organic growth signals - **Authenticity assessment:** Marketing vs reality gap identification - **Churn signals:** Cancellation reasons, switching patterns - **Feature requests:** What users want, what's missing ### Phase 4: Leadership Intelligence (15-20 min) **Data Collection:** - Founder and C-level profiles - Career history and expertise - Personal posting activity - Thought leadership quality **Tools Used:** - `search_linkedin_users` - Leadership identification - `get_linkedin_profile` - Detailed profiles - `get_linkedin_user_posts` - Personal activity - `get_linkedin_user_comments` - Engagement style - `get_twitter_user` - Personal brand **Output:** - Leadership team profiles - Founder backgrounds - Thought leadership assessment - Public credibility signals ### Phase 5: Technical Discovery (10-15 min) **Data Collection:** - Documentation quality - API capabilities - GitHub presence - Integration ecosystem **Tools Used:** - `parse_webpage` - Documentation scraping - `get_sitemap` - Integration discovery **Output:** - Technical capabilities assessment - Developer experience quality - Open source presence - Integration partners ### Phase 6: Strategic Synthesis (15-20 min) **Analysis Framework:** - SWOT analysis - Competitive positioning - Strategic insights - Action recommendations **Output:** - Comprehensive report - Battle card (optional) - Monitoring plan - Strategic recommendations ## Output Format The skill produces two formats: ### JSON Template Structured data for programmatic processing: ```json { "company_overview": { "name": "Competitor Name", "website": "https://competitor.com", "description": "...", "headquarters": "San Francisco, CA", "employee_count": 150, "founded_year": 2020 }, "positioning": { "positioning_statement": "...", "value_proposition": "...", "target_market": "...", "core_features": ["feature1", "feature2"] }, "pricing": { "model": "Subscription", "tiers": [...], "entry_price": 49, "unit_economics": "..." }, "swot_analysis": { "strengths": [...], "weaknesses": [...], "opportunities": [...], "threats": [...] }, "strategic_insights": { "key_takeaways": [...], "competitive_threats": [...], "opportunities_to_exploit": [...], "watch_areas": [...] } } ``` ### Markdown Report Human-readable comprehensive analysis: ```markdown # Competitive Intelligence Report: Competitor Name **Analysis Date:** November 18, 2025 **Analysis Depth:** Deep Intelligence **Analyst:** Claude with Competitor Analyzer Skill ## Executive Summary [3-5 paragraph overview of key findings] ## Company Overview - **Headquarters:** Location - **Team Size:** Employee count - **Funding:** Round and amount - **Founded:** Year ## Positioning & Market Approach ### Value Proposition [Their core pitch and positioning] ### Target Market [Who they sell to and why] ### Key Features 1. Feature 1 2. Feature 2 3. Feature 3 ## Pricing Analysis [Detailed pricing breakdown with tier comparison] ## Leadership Team ### Founders [Founder profiles with backgrounds] ### C-Level Executives [Executive team analysis] ## SWOT Analysis ### Strengths (What They Do Well) - Strength 1 - Strength 2 ### Weaknesses (Where They Struggle) - Weakness 1 - Weakness 2 ### Opportunities (What We Can Exploit) - Opportunity 1 - Opportunity 2 ### Threats (What We Need to Watch) - Threat 1 - Threat 2 ## Strategic Insights ### Key Takeaways 1. Takeaway 1 2. Takeaway 2 3. Takeaway 3 ### Competitive Threats 1. Threat 1 2. Threat 2 ### Opportunities to Exploit 1. Opportunity 1 2. Opportunity 2 3. Opportunity 3 ### Watch Areas - Area 1 to monitor quarterly - Area 2 to monitor quarterly ``` ## Common Use Cases #### Market Entry Analyze 3-5 competitors before entering a market segment #### Product Strategy Identify feature gaps and differentiation opportunities #### Pricing Strategy Benchmark pricing and understand competitive positioning #### Sales Enablement Create battle cards for sales team competitive wins #### M&A Due Diligence Assess acquisition targets and strategic fit #### Partnership Evaluation Evaluate potential partners and collaboration opportunities #### Quarterly Monitoring Track competitor changes and strategic shifts #### Fundraising Prep Understand competitive landscape for investor conversations ## Behind the Scenes The skill uses these Anysite MCP tools: #### Web Intelligence **Tools:** - `parse_webpage` - Web page scraping - `get_sitemap` - Site structure discovery **Usage:** - Homepage and product pages - Pricing and documentation - Integration marketplaces #### LinkedIn Tools **Tools:** - `search_linkedin_companies` - Company discovery - `get_linkedin_company` - Company profiles - `get_linkedin_company_employees` - Team analysis - `get_linkedin_company_posts` - Content strategy - `search_linkedin_users` - People search - `get_linkedin_profile` - Detailed profiles - `get_linkedin_user_posts` - Personal activity - `get_linkedin_user_comments` - Engagement analysis - `get_linkedin_user_reactions` - Interest patterns **Usage:** - Company intelligence - Team size and growth - Leadership identification - Content analysis #### Social Media **Tools:** - `get_twitter_user` - Profile data - `get_twitter_user_posts` - Activity tracking (100 posts) - `search_twitter_posts` - Multi-layer mention monitoring (300+ tweets) - `search_reddit_posts` - Multi-subreddit intelligence (300-500 posts) - `get_reddit_post_comments` - Deep thread analysis **Usage:** - Twitter Layer 1-4 analysis - Reddit Layer 1-5 research - Cross-platform sentiment scoring - Community health metrics - Customer voice extraction - Churn signal detection #### Search & Discovery **Tools:** - `duckduckgo_search` - Web search **Usage:** - News and announcements - Third-party reviews - Media coverage ## Tips for Best Results > **Start with clear objectives** Define what you need to know before starting: - Pricing comparison? - Feature gaps? - Leadership assessment? - Market positioning? > **Follow the phase order** The 6-phase framework is designed to build context progressively. Don't skip phases - later insights depend on earlier data. > **Verify across multiple sources** Don't rely on a single data point: - Cross-reference website claims with social media - Validate pricing with customer reviews - Check leadership claims against LinkedIn profiles > **Focus on recent data** Competitive landscapes change fast: - Prioritize data from last 3-6 months - Note staleness of older information - Plan quarterly updates for key competitors > **Think strategically, not just descriptively** Don't just report what you find: - Analyze WHY they made certain choices - Consider their constraints (funding, team size) - Identify patterns and strategic shifts - Translate findings into action items > **Document confidence levels** Be clear about what you know vs. estimate: - "Verified" - From official sources - "Estimated" - Based on signals and inference - "Unclear" - Insufficient data ## Advanced Techniques ### Multi-Competitor Analysis For analyzing 3-5 competitors simultaneously: 1. Run analysis workflow for each competitor 2. Create comparison matrix 3. Build feature comparison table 4. Map pricing across competitors 5. Identify market positioning clusters **Output:** Competitive landscape matrix with clear differentiation ### Ongoing Monitoring For quarterly updates without full re-analysis: **Quick Check (3-5 minutes):** - Re-scrape pricing page - Check 10 recent LinkedIn posts - Review employee count changes - Scan Twitter mentions from last quarter **Update only changed sections** in existing reports. ### Battle Card Creation For sales team enablement: **Key Elements:** 1. Quick facts (1-2 sentences) 2. Feature comparison (table) 3. Pricing comparison (clear numbers) 4. 3 reasons we win 5. 3 reasons we might lose 6. Talk tracks **Keep to 1-2 pages maximum** for quick reference. ### Leadership-Focused Deep Dive For partnership or M&A scenarios: 1. Identify all founders and C-level 2. Deep dive into each profile (50+ posts) 3. Track personal brand evolution 4. Map network and influence 5. Assess credibility and expertise 6. Evaluate cultural fit signals ### Social Intelligence Playbook Advanced techniques for ongoing social monitoring: #### Weekly Monitoring **Quick pulse check (3-5 minutes):** 1. Twitter mentions from last 7 days 2. Reddit top discussions 3. Sentiment trending up or down? 4. New complaints emerged? 5. Viral content patterns **Tools:** Quick searches with date filters #### Monthly Deep Dive **Comprehensive review (10-15 minutes):** 1. Full Twitter Layer 1-4 analysis 2. Reddit Layer 1-5 comprehensive scan 3. Cross-platform synthesis 4. Community health trends 5. Competitive positioning shifts 6. Update sentiment scores **Output:** Trend report with month-over-month changes #### Quarterly Battle Card Update **Strategic refresh (15-20 minutes):** 1. Complete Phase 3 refresh (all layers) 2. Update sentiment scores and patterns 3. New pain points identification 4. Competitive comparison refresh 5. Strategic recommendations update 6. Customer voice evolution tracking **Output:** Updated battle card with latest intelligence ### Advanced Social Insights What you'll discover from deep social research: #### From Twitter - Founder credibility and thought leadership - Real-time customer support quality - Feature request velocity - Churn warning signals - Power user identification - Viral content patterns #### From Reddit - Unfiltered technical problems - Pricing sensitivity insights - Competitive win/loss factors - Implementation challenges - Workaround patterns (missing features) - Community-driven solutions #### From Cross-Platform Analysis - Marketing vs reality gap - Organic vs paid growth signals - Support theater detection - True product-market fit assessment - Community health trajectory - Trust score calculation #### Strategic Signals - Churn patterns and reasons - Feature gap opportunities - Pricing pressure points - Customer success factors - Community advocate identification - Competitive vulnerability spots ## Example Output Preview ```markdown # Competitive Intelligence Report: TechStartup Inc. **Analysis Date:** November 18, 2025 **Analysis Depth:** Deep Intelligence ## Executive Summary TechStartup Inc. is a Series B SaaS company ($25M raised) targeting mid-market companies with an API-first development platform. They've grown from 50 to 150 employees in the past year, indicating strong traction. Their pricing is aggressive (20% below market average), suggesting a land-grab strategy. The founding team has strong technical credibility (ex-Google, ex-Stripe) but limited enterprise sales experience, which may constrain upmarket expansion. ## Key Findings ### Strengths - **Developer Experience**: Excellent API documentation, 7K GitHub stars - **Pricing Advantage**: 20% below market with generous free tier - **Technical Team**: Strong engineering pedigree, fast feature velocity ### Weaknesses - **Enterprise Features**: Limited SSO, RBAC, audit logs - **Sales Capacity**: Small sales team (5 people) for enterprise push - **Documentation Gaps**: Missing advanced use cases, limited video content ### Opportunities to Exploit - **Enterprise Focus**: We can win upmarket with better security/compliance - **Customer Support**: Their response time is 24-48hrs vs our 2-4hrs - **Integration Ecosystem**: We have 3x more pre-built integrations ### Competitive Threats - **Growth Velocity**: Adding 10 engineers/month, feature parity coming fast - **Brand Momentum**: Strong developer community, high social engagement - **Recent Funding**: $25M runway enables aggressive pricing and hiring ## Strategic Recommendations 1. **Accelerate enterprise feature development** - They're 12-18 months behind 2. **Double down on customer support** - Clear differentiation opportunity 3. **Build developer community** - Match their GitHub/Twitter presence 4. **Monitor their Series C** - Next funding round will fuel upmarket push ## Watch Areas (Quarterly Review) - Employee count growth (tracking at 10/month currently) - GitHub star growth (2K stars in last quarter) - Pricing changes (they're currently underpriced) - Leadership hires (need enterprise sales VP) ``` ## Troubleshooting #### Can't find company on LinkedIn **Solutions:** - Try variations of company name (Inc., LLC, etc.) - Search for CEO name, find company from their profile - Check if they use different legal name vs brand name - Try domain-based search if available #### Pricing page missing or unclear **Solutions:** - Try alternative URLs: /plans, /buy, /subscribe, /get-started - Look for pricing calculator or ROI tools - Check for "Contact Sales" (signal of enterprise focus) - Review archived pages on Wayback Machine - Note absence as strategic signal (high-touch sales model) #### No social media presence **Solutions:** - Document the absence (itself a signal about strategy) - Check founder personal accounts instead - Look for employee posting activity - Review company blog as alternative channel - Consider it a differentiation opportunity #### Too much data, feeling overwhelmed **Solutions:** - Start with Phase 1 & 2 only (foundation + LinkedIn) - Generate partial report with what you have - Use Quick Assessment mode (3-5 min) - Focus on your specific research questions - Add depth incrementally as needed #### Leadership profiles are private or limited **Solutions:** - Check their Twitter/personal websites instead - Look for podcast appearances or interviews - Review company blog posts authored by them - Check conference speaking history - Analyze what IS public for signals #### Conflicting data across sources **Solutions:** - Note the conflict and both data points - Prioritize official sources (website, LinkedIn) - Check dates - newer information likely more accurate - Look for third source to triangulate - Document confidence level as "unclear" ## Quality Standards **Good competitive analysis includes:** > ✅ Clear positioning statement with quotes ✅ Quantified metrics (prices, team size, followers) ✅ Specific examples from actual data ✅ Strategic implications explained ✅ Data sources and dates noted ✅ Confidence levels indicated ✅ Actionable recommendations **Avoid:** > ❌ Vague assessments ("they seem good at marketing") ❌ Unsupported claims ("probably losing money") ❌ Missing pricing details ❌ Outdated data without timestamps ❌ Pure feature lists without analysis ❌ Personal opinions vs data-driven insights ## Related Resources #### Person Analyzer Skill Analyze individuals, founders, and key decision makers #### MCP Server Tools View all available Anysite MCP tools for data gathering #### Claude Desktop Setup Install and configure Anysite MCP Server #### API Documentation Direct API access for custom integrations ## Need Help? #### Get Support Contact our support team for assistance with competitive intelligence workflows --- **Last Updated:** November 18, 2025 **Maintained by:** Anysite.io --- # Person Analyzer Skill ## What is Person Analyzer? The **Person Analyzer** skill is a powerful intelligence gathering tool that creates comprehensive profiles of individuals by combining LinkedIn data, web research, and strategic analysis. Perfect for sales prospecting, partnership evaluation, investor research, and talent assessment. ## Prerequisites Before using this skill, ensure you have: #### Install Anysite MCP Server The Person Analyzer skill requires Anysite MCP Server with active subscription #### Learn About Skills New to Claude Desktop Skills? Read the complete guide on how to install and use skills ## Download Person Analyzer Skill #### Download Person Analyzer Skill Click to download the Person Analyzer skill file ### Installation 1. **Download** the skill file using the button above 2. **Upload** to Claude Desktop (drag and drop or use upload button) 3. **Skill is ready** - Start analyzing people immediately ## Overview The Person Analyzer skill performs multi-source intelligence gathering and analysis: - **LinkedIn Profile Data** - Background, experience, skills, education - **Activity Analysis** - Posts, comments, reactions to understand engagement patterns - **Company Intelligence** - Company profile, posts, recent news - **Web Research** - Articles, interviews, conference appearances - **Strategic Assessment** - Evaluation for business value and connection strategy ## What You'll Get The skill produces a comprehensive markdown report with: #### Executive Summary Quick overview of who they are and why they matter to your business #### Professional Profile Current role, experience history, education, network size, and key skills #### Activity & Engagement Analysis Content themes, posting frequency, engagement patterns, and topics of interest #### Company Intelligence Company overview, recent news, funding information, and strategic context #### Web Intelligence External presence, publications, speaking engagements, and media mentions #### Connection Strategy Recommended topics, engagement approach, best communication channels, and ice-breakers #### Strategic Value for Anysite ICP fit assessment, priority tier (1-4), and specific action items ## Usage Examples ### Starting with LinkedIn URL The simplest way to use the skill: ``` Analyze this person: https://www.linkedin.com/in/john-smith/ ``` ### Starting with Name + Context If you don't have a LinkedIn URL, provide context: ``` Analyze Alex Johnson, VP of Engineering at TechCorp, based in San Francisco ``` ### Quick Analysis For faster results when you need basic information: ``` Do a quick analysis of Jane Doe (CTO at DataAI) ``` ### Deep Dive Analysis For high-value targets requiring comprehensive intelligence: ``` Do a deep dive analysis on this LinkedIn profile: [URL] I need comprehensive intelligence for an investor meeting ``` ## Analysis Depths The skill supports three levels of analysis depth: #### Quick **1-5 minutes** - Profile overview - Recent posts (10-20) - Company basics - Quick assessment #### Standard **5-10 minutes** (Default) - Full profile details - Posts analysis (20-50) - Company research - Web intelligence - Strategic recommendations #### Deep Dive **10-20 minutes** - Extended post analysis (100+) - Deep web research - Comprehensive company intel - Detailed connection strategy - Priority assessment ## Key Features ### Multi-Source Intelligence The skill gathers data from multiple sources: - **LinkedIn Profile** - Complete professional history, education, skills - **LinkedIn Activity** - 20-50 recent posts for content themes - **Engagement Patterns** - Comments and reactions to understand style - **Company Context** - Company profile and recent posts - **Web Presence** - Search results, articles, interviews, conferences ### Strategic Assessment Evaluates people across four dimensions: 1. **Customer Potential** - Does their company match Anysite ICP? 2. **Partnership Potential** - Integration or channel opportunities? 3. **Network Value** - Influence level and connection quality? 4. **Advisory/Talent Value** - Expertise for advising or future hire? ### Conversation Strategy Provides specific, actionable recommendations: - Top 3-5 conversation topics based on their actual posts - Best engagement channel and timing - Specific ice-breaker suggestions - How to position Anysite's value proposition ### Priority Tiering Automatically classifies people into 4 tiers: #### Tier 1: Hot Lead Decision maker + ICP match + high engagement **Action:** Immediate personalized outreach #### Tier 2: Warm Lead Mid-level + ICP match OR significant influencer **Action:** Scheduled outreach within 1-2 weeks #### Tier 3: Long-term Nurture Potential future value, building relationship **Action:** Add to nurture campaign #### Tier 4: Low Priority No clear fit with current objectives **Action:** Passive monitoring only ## Anysite ICP Focus The skill is optimized for Anysite's ideal customer profile: - **Industries** - B2B SaaS, AI/ML companies, data-intensive businesses - **Company Size** - 10-500 employees (sweet spot: 20-200) - **Stage** - Seed to Series B startups - **Decision Makers** - CTO, VP Engineering, Founders, Product Leads - **Pain Points** - Web scraping, API integrations, agent development ## Advanced Usage ### Customizing Analysis Depth ``` Do a quick analysis of [person] - I just need basic info ``` ``` Deep dive on [LinkedIn URL] - analyzing for partnership opportunity ``` ### Specific Focus Areas ``` Analyze [person] with focus on their AI/ML expertise ``` ``` Analyze [person] - I need to understand if they're a good fit for our Series A pitch ``` ## Behind the Scenes The skill uses these Anysite MCP tools: #### LinkedIn Tools - `get_linkedin_profile` - `get_linkedin_user_posts` - `get_linkedin_user_comments` - `get_linkedin_user_reactions` - `get_linkedin_company` - `get_linkedin_company_posts` #### Web Research Tools - `duckduckgo_search` - Web search - `parse_webpage` - Page parsing ## Tips for Best Results > **Provide context when starting with a name** Include title, company, and location to help identify the right person: ``` Analyze John Smith, VP Engineering at TechCorp in San Francisco ``` > **Specify your purpose** Mentioning your goal helps adjust the analysis focus: ``` Analyze [LinkedIn URL] for partnership discussion ``` vs ``` Analyze [LinkedIn URL] for sales outreach ``` > **Request specific depth when time matters** - Quick analysis for basic screening - Deep dive for high-value targets > **Use the strategic recommendations** The suggestions are based on actual data extracted from their posts and activity, not generic advice. ## Example Output Preview ```markdown # Person Intelligence Report: John Smith **Generated:** November 18, 2025 **Analysis Depth:** Standard **Confidence Score:** 85% ## Executive Summary John Smith is VP of Engineering at TechCorp (Series A AI startup, 80 employees). Active LinkedIn contributor focused on AI agent development and MLOps. Strong ICP match with decision-making authority. Tier 1 priority for immediate outreach. ## Professional Profile - **Current Role:** VP Engineering at TechCorp (since Jan 2023) - **Location:** San Francisco, CA - **Experience:** 12 years in engineering leadership - **Education:** MS Computer Science, Stanford - **Network Size:** 3,200 connections ## Activity & Engagement Analysis **Posting Frequency:** 3-4 times per week **Primary Topics:** 1. AI Agent Infrastructure (35% of posts) 2. MLOps Best Practices (28% of posts) 3. Engineering Team Culture (20% of posts) **Engagement Style:** Thoughtful commenter, shares practical insights ## Connection Strategy ### Recommended Conversation Topics 1. **AI Agent Infrastructure** - Posted 5 times about agent reliability challenges 2. **MLOps Best Practices** - Commented on 8 threads about model deployment 3. **TechCorp's Recent $15M Series A** - Acknowledge their growth milestone ### Engagement Approach - **Best Channel:** LinkedIn comment on recent agent post - **Timing:** Tuesday-Thursday mornings (most active) - **Ice-breaker:** "Your post about agent reliability really resonated..." ### Anysite Value Proposition Position Anysite as: - Reliable data infrastructure for AI agents - Scalable scraping for model training data - API integrations to reduce engineering overhead ## Strategic Value Assessment - **ICP Match:** 95% (Perfect fit) - **Decision Authority:** High (VP Engineering) - **Budget Signals:** Recent funding + team scaling - **Priority Tier:** Tier 1 (Hot Lead) ### Recommended Actions 1. Engage on LinkedIn within 48 hours 2. Reference specific agent infrastructure post 3. Offer case study from similar AI startup 4. Schedule demo call for next week ``` ## Troubleshooting #### Skill not loading after upload **Solutions:** - Make sure you're using Claude Desktop (not web version) - Check that the file extension is `.skill` - Try restarting Claude Desktop - Verify you have the latest Claude Desktop version #### Missing data in analysis **Solutions:** - Verify that Anysite MCP Server is properly configured - Check your API key has sufficient credits - Some profiles may have limited public information - Try with a different, more public profile to test #### Analysis takes too long **Solutions:** - Use "quick analysis" for faster results - Some LinkedIn profiles with extensive activity require more time - Deep dive analysis naturally takes 10-20 minutes - Check your internet connection speed #### Skill returns errors **Solutions:** - Ensure your Anysite API key is valid and not expired - Check MCP Server installation in [settings](/docs/mcp-server/claude-desktop-tool/installation) - Verify the LinkedIn URL is publicly accessible - Try restarting Claude Desktop #### Can't find person on LinkedIn **Solutions:** - Try different name variations (with middle name, without) - Add more context: company, location, title - Search manually on LinkedIn first, then provide exact URL - Check if person uses a different name professionally ## Related Resources #### Competitor Analyzer Skill Analyze competitors, leadership teams, and market positioning #### All Skills Browse all available Claude Desktop skills #### MCP Server Tools View all available Anysite MCP tools #### API Documentation Direct API access for custom integrations ## Need Help? #### Get Support Contact our support team for assistance with Person Analyzer workflows --- **Created by:** Andrew Kulikov, Anysite.io **Version:** 1.0 **Last Updated:** November 18, 2025 --- # Claude Desktop Skills ## What are Claude Desktop Skills? Skills are specialized, reusable workflows that extend Claude Desktop's capabilities. They combine multiple tools and APIs to perform complex, multi-step tasks autonomously. Skills are perfect for repetitive workflows like research, analysis, data enrichment, and intelligence gathering. ## Prerequisites Before using Skills with Anysite integration, you need to have the Anysite MCP Server installed and configured in Claude Desktop. #### Install Anysite MCP Server Follow the installation guide to set up the Anysite MCP Server in Claude Desktop ## Installing Skills Installing a skill in Claude Desktop is simple: 1. **Download the skill file** - Skills are packaged as `.skill` files 2. **Open Claude Desktop** 3. **Upload the skill file** - Either drag and drop or use the upload button 4. **Skill is ready** - Claude will automatically recognize and load the skill That's it! The skill is now available for use in your conversations. ## Available Skills ### Person Intelligence & Research #### Person Analyzer **Analyze individuals for sales, partnerships, or talent** Creates comprehensive profiles combining LinkedIn data, web research, and strategic analysis. Perfect for: - Sales prospecting and lead qualification - Partnership evaluation - Investor and advisor research - Talent assessment **Analysis Time:** 1-20 minutes depending on depth #### Competitor Analyzer **Deep competitive intelligence gathering** Systematic framework for analyzing competitors using web scraping, LinkedIn data, social media, and leadership analysis. Perfect for: - Market entry research - Product strategy planning - Battle card creation - M&A due diligence **Analysis Time:** 3-10 minutes depending on depth #### VC Analyst **Find, score, and connect with the right investors** AI-powered investor research combining LinkedIn intelligence, Y Combinator data, and portfolio analysis. Perfect for: - Building targeted investor lists - Scoring investor fit (0-100) - Detecting portfolio conflicts - Generating personalized outreach **Analysis Time:** 2-20 minutes depending on depth ## Key Features ### Multi-Source Intelligence Skills combine data from multiple sources: - **LinkedIn** - Profiles, company data, posts, engagement - **Social Media** - Twitter, Reddit, community discussions - **Web Research** - Articles, documentation, news - **Alternative Data** - GitHub, Glassdoor, public records ### Autonomous Execution Skills work independently: - No manual data collection required - Automatically gathers and analyzes information - Follows systematic workflows - Produces structured reports ### Strategic Analysis Beyond data collection: - SWOT analysis and competitive positioning - Strategic recommendations and action items - Priority scoring and tiering - Conversation strategies and ice-breakers ## How to Use Skills ### Starting a Skill Simply describe what you want in natural language: ``` Analyze this person: https://www.linkedin.com/in/john-smith/ ``` ``` Do a competitive analysis of Acme Corp ``` ``` Research the founding team at StartupX ``` ### Customizing Depth Control how deep the analysis goes: ``` Do a quick analysis of Jane Doe (CTO at DataAI) ``` ``` Deep dive analysis on TechCo - I need comprehensive intelligence for an investor meeting ``` ### Specifying Focus Guide the skill to focus on specific aspects: ``` Analyze [person] with focus on their AI/ML expertise ``` ``` Analyze [competitor] - focus on pricing strategy and feature comparison ``` ## Skill Capabilities #### LinkedIn Intelligence **What Skills Can Extract:** - Complete profile data (experience, education, skills) - Activity analysis (posts, comments, reactions) - Company information and context - Team size and growth signals - Content strategy and themes - Engagement patterns and network quality **MCP Tools Used:** - `search_linkedin_users` / `search_linkedin_companies` - `get_linkedin_profile` / `get_linkedin_company` - `get_linkedin_user_posts` / `get_linkedin_company_posts` - `get_linkedin_user_comments` / `get_linkedin_user_reactions` - `get_linkedin_company_employees` #### Web Intelligence **What Skills Can Extract:** - Homepage and product messaging - Pricing structures and tiers - Documentation quality - Blog content and thought leadership - Integration ecosystems - Contact information **MCP Tools Used:** - `parse_webpage` - Extract content from any web page - `get_sitemap` - Discover all pages on a website - `duckduckgo_search` - Web search tool for finding relevant information #### Social Intelligence **What Skills Can Extract:** - Twitter presence and activity - Reddit mentions and sentiment - Community discussions and feedback - Customer complaints and praise - Feature requests and gaps - Influencer identification **MCP Tools Used:** - `get_twitter_user` / `get_twitter_user_posts` - `search_twitter_posts` - Track mentions - `search_reddit_posts` - Community intelligence #### Technical Intelligence **What Skills Can Extract:** - GitHub organization and repositories - Star and fork counts (developer interest) - Development velocity and activity - Open source presence - API documentation quality - Technical capabilities **MCP Tools Used:** - `parse_webpage` - Scrape GitHub pages - Web scraping for technical documentation ## Creating Your Own Skills Skills are powerful tools for automating workflows. If you're interested in creating custom skills for your team: #### Identify Repetitive Workflow Find a task you do repeatedly that involves multiple steps and data sources #### Map Data Sources Identify which Anysite MCP tools provide the data you need #### Define Output Format Decide what information you want in the final report #### Create Skill File Package your workflow as a `.skill` file for Claude Desktop #### Test and Refine Try your skill on real examples and iterate based on results > Skills work best when combined with MCP Server tools. Check out the [MCP Server documentation](/docs/mcp-server/tools) to see all available tools you can use in your custom skills. ## Best Practices #### Start Simple Begin with Quick or Standard analysis depths before going deep. This helps you understand what the skill can do. #### Provide Context Give as much context as possible (title, company, location) for better results, especially when starting with names. #### Specify Your Goal Tell the skill your purpose (sales, partnership, hiring) to get focused, relevant recommendations. #### Verify Key Facts Always verify critical information from multiple sources, especially for high-stakes decisions. ## Troubleshooting #### Skill not loading after upload **Solutions:** - Make sure you're using Claude Desktop (not web version) - Check that the file extension is `.skill` - Try restarting Claude Desktop - Verify you have the latest Claude Desktop version #### Skill requires tools not available **Solutions:** - Verify Anysite MCP Server is properly configured - Check your subscription includes the required tools - Restart Claude Desktop after MCP setup - Test MCP connection with a simple query #### Analysis incomplete or partial **Solutions:** - Check your API key has sufficient credits - Some profiles may have limited public information - Try requesting specific depth (quick, standard, deep dive) - Verify internet connection is stable #### Skill returns errors **Solutions:** - Ensure your Anysite API key is valid and not expired - Check MCP Server installation in [settings](/docs/mcp-server/claude-desktop-tool/installation) - Verify URLs are accessible and correctly formatted - Try restarting Claude Desktop ## Related Resources #### MCP Server Tools View all available Anysite MCP tools that power skills #### Claude Desktop Setup Install and configure Anysite MCP Server #### API Documentation Direct API access for custom integrations #### Community Examples Browse skill examples and community contributions ## Need Help? #### Get Support Contact our support team for assistance with skills and workflows --- **Skills Catalog Maintained by:** Anysite.io **Last Updated:** January 2026 --- # VC Analyst Skill ## What is VC Analyst? The **VC Analyst** skill is an AI-powered assistant that helps startup founders research and connect with the right investors. It combines LinkedIn intelligence, Y Combinator data, web research, and portfolio analysis to score investor fit, detect conflicts, and generate personalized outreach messages. **Perfect for:** - Seed and early-stage founders preparing for fundraising - Startups building targeted investor lists - Founders researching VC firms and partners - Teams needing personalized investor outreach at scale ## Prerequisites Before using this skill, ensure you have: #### Install Anysite MCP Server The VC Analyst skill requires Anysite MCP Server with active subscription #### Learn About Skills New to Claude Desktop Skills? Read the complete guide on how to install and use skills ## Download VC Analyst Skill #### Download VC Analyst Skill Click to download the VC Analyst skill file ### Installation 1. **Download** the skill file using the button above 2. **Upload** to Claude Desktop (drag and drop or use upload button) 3. **Skill is ready** - Start researching investors immediately ## Smart Onboarding The VC Analyst skill starts with a 5-step onboarding process to understand your startup and fundraising context: #### About You What's your role in the startup? - Founder/CEO - Co-founder (technical) - Co-founder (business) - Team member helping with fundraising #### About Your Company Tell me about your startup: - Company name - One-line description - Industry/vertical - Current stage (pre-seed, seed, Series A, etc.) #### Target Check Size How much are you raising? - $100K - $500K (pre-seed) - $500K - $2M (seed) - $2M - $5M (seed+) - $5M - $15M (Series A) - $15M+ (Series B+) #### Pitch Materials Share your pitch materials (optional): - Pitch deck link (Google Slides, Notion, DocSend, etc.) - Calendar booking link for meetings *These will be included in personalized outreach messages* #### Special Preferences Any specific investor criteria? - Geographic focus (e.g., "US-based only", "Europe preferred") - Investor type preference (angels, micro-VCs, institutional) - Specific sectors they should focus on - Any investors to avoid > **Pro Tip:** The more context you provide during onboarding, the better the investor matching and outreach personalization will be. ## Overview The VC Analyst skill performs comprehensive investor intelligence: - **Investor Research** - LinkedIn profiles, investment history, portfolio companies - **Fit Scoring** - 0-100 score based on 5 key factors - **Conflict Detection** - Identify portfolio companies that compete with you - **YC Database** - Search Y Combinator companies for insights - **Outreach Generation** - Personalized messages with your pitch deck and calendar links ## Investor Scoring System Every investor is evaluated on a **0-100 Fit Score** based on 5 factors: #### Stage Match **Weight: 25%** Does the investor typically invest at your stage? - Pre-seed specialists - Seed-focused funds - Series A+ institutional #### Check Size Fit **Weight: 20%** Is your target raise within their typical range? - Angel: $25K - $100K - Micro-VC: $100K - $500K - Seed VC: $500K - $2M - Series A: $2M - $10M #### Sector Alignment **Weight: 25%** Do they invest in your industry? - Portfolio analysis - Stated thesis - Recent investment trends #### Portfolio Conflict **Weight: 20%** Do they have competing portfolio companies? - Direct competitors (red flag) - Adjacent space (yellow flag) - Complementary (green flag) #### Activity Level **Weight: 10%** Are they actively investing? - Recent deals (last 6 months) - LinkedIn activity - Speaking engagements ### Score Interpretation | Score | Rating | Recommendation | |-------|--------|----------------| | 80-100 | Excellent Fit | Priority outreach - strong alignment | | 60-79 | Good Fit | Worth pursuing - minor gaps | | 40-59 | Moderate Fit | Selective approach - specific angle needed | | 20-39 | Weak Fit | Low priority - significant misalignment | | 0-19 | Poor Fit | Skip - fundamental mismatch | ## Portfolio Conflict Detection The skill automatically scans investor portfolios to identify potential conflicts: #### Direct Conflict (Red Flag) **What it means:** Investor has a portfolio company directly competing in your space **Example:** You're building a CRM, they invested in a CRM startup **Recommendation:** Usually avoid - unless their portfolio company failed or pivoted #### Adjacent Space (Yellow Flag) **What it means:** Portfolio company operates in related but not directly competing space **Example:** You're building sales automation, they invested in marketing automation **Recommendation:** Proceed with caution - clarify differentiation in outreach #### Complementary (Green Flag) **What it means:** Portfolio companies could be potential customers or partners **Example:** You're building API tools, they invested in companies that need APIs **Recommendation:** Highlight synergies - this is a plus! ## Usage Examples ### Research a Specific Investor ``` Research Garry Tan as a potential investor for my AI startup ``` **What the skill does:** 1. Fetches LinkedIn profile and activity 2. Analyzes Y Combinator portfolio (he's YC CEO) 3. Checks for portfolio conflicts 4. Calculates fit score 5. Generates personalized outreach message ### Find Investors by Criteria ``` Find seed-stage investors who focus on AI/ML and developer tools ``` **What the skill does:** 1. Searches LinkedIn for matching investors 2. Cross-references with YC database 3. Scores and ranks each investor 4. Presents top 10 with reasoning ### Analyze a VC Firm ``` Analyze Sequoia Capital for Series A fit ``` **What the skill does:** 1. Researches firm's recent investments 2. Identifies relevant partners 3. Analyzes investment thesis 4. Checks portfolio for conflicts 5. Recommends best partner to approach ### Generate Outreach ``` Create an outreach message for [investor name] ``` **What the skill does:** 1. Uses onboarding context about your startup 2. References investor's recent activity/interests 3. Includes your pitch deck link 4. Adds calendar booking link 5. Creates personalized, non-generic message ## Analysis Depths #### Quick Scan **2-3 minutes** - Basic profile info - Recent investments - Quick fit assessment - Short outreach draft #### Standard Analysis **5-10 minutes** (Default) - Full LinkedIn intelligence - Portfolio analysis - Conflict detection - Detailed scoring - Personalized outreach #### Deep Research **15-20 minutes** - Extended activity analysis - YC database cross-reference - Comprehensive portfolio scan - Multi-source web research - Strategic approach plan ## Key Features ### Multi-Source Intelligence The skill gathers data from multiple sources: #### LinkedIn Intelligence - Investor profile and background - Current fund and role - Investment history (from experience section) - Recent posts and activity - Engagement patterns and interests - Network connections #### Y Combinator Data - YC company database search - Batch and funding information - Founder backgrounds - Company status and outcomes - Similar companies analysis #### Web Research - Recent news and announcements - Podcast and interview appearances - Conference speaking engagements - Published investment theses - Portfolio company news #### Portfolio Analysis - Current portfolio companies - Investment patterns and preferences - Sector concentration - Stage preferences - Geographic focus ### Personalized Outreach Generation The skill creates outreach messages that: > - Reference investor's recent posts or investments - Highlight relevant portfolio synergies - Include your pitch deck link (from onboarding) - Add calendar booking link for easy scheduling - Avoid generic templates and cliches - Match investor's communication style **Example Generated Outreach:** ``` Hi [Investor Name], Your recent post about [specific topic] really resonated with what we're building at [Company]. We're [one-line description] and just [recent milestone]. I noticed you invested in [portfolio company] - we're seeing similar patterns in [related area] but focused on [your differentiation]. Would love to share more: [Pitch Deck Link] If you're interested, here's my calendar: [Calendar Link] Best, [Your Name] ``` ### Investor Comparison Compare multiple investors side-by-side: ``` Compare Andreessen Horowitz, Sequoia, and Greylock for my Series A ``` **Output:** | Factor | a16z | Sequoia | Greylock | |--------|------|---------|----------| | Stage Fit | 85% | 90% | 80% | | Sector Fit | 75% | 85% | 90% | | Check Size | Match | Match | Match | | Conflicts | None | 1 adjacent | None | | **Overall Score** | **78** | **85** | **82** | ## Behind the Scenes The skill uses these Anysite MCP tools: #### LinkedIn Tools **Tools:** - `search_linkedin_users` - Find investors - `get_linkedin_profile` - Detailed profiles - `get_linkedin_user_posts` - Activity analysis - `get_linkedin_company` - Firm research - `get_linkedin_company_employees` - Partner discovery **Usage:** - Investor background and experience - Investment history - Current fund information - Activity and engagement patterns #### Y Combinator Tools **Tools:** - `yc_search_companies` - Search YC database - `yc_search_founders` - Find YC founders - `yc_company` - Company details **Usage:** - Portfolio company research - Competitive landscape - Similar company analysis - Founder backgrounds #### Web Research **Tools:** - `duckduckgo_search` - Web search - `parse_webpage` - Page parsing **Usage:** - News and announcements - Investment theses - Podcast appearances - Portfolio analysis ## Tips for Best Results > **Complete the onboarding thoroughly** The more context you provide about your startup, the better the investor matching and outreach personalization will be. Include: - Detailed company description - Current traction metrics - Pitch deck link - Calendar booking link > **Be specific about your criteria** Instead of "find me investors", try: ``` Find seed-stage investors who: - Focus on B2B SaaS - Have invested in developer tools - Are based in SF Bay Area - Write checks between $500K-$1M ``` > **Use conflict detection strategically** A portfolio conflict isn't always a dealbreaker: - If their portfolio company is struggling, they might want a better bet - Adjacent space investments show sector expertise - Ask about their conflict policy directly > **Personalize the generated outreach** The skill provides a strong starting point, but always: - Add your personal touch - Reference specific, recent content - Customize the hook for each investor - Follow up within 1 week if no response > **Track your outreach** Keep a simple spreadsheet with: - Investor name and firm - Fit score from the skill - Outreach date - Response status - Next steps ## Example Output Preview ```markdown # Investor Intelligence Report: Sarah Chen **Generated:** January 9, 2026 **Analysis Depth:** Standard **Your Startup:** TechFlow (AI-powered developer tools) ## Executive Summary Sarah Chen is a Partner at Acme Ventures focused on developer tools and infrastructure. Strong stage and sector fit (Fit Score: 87/100). No direct portfolio conflicts - her investment in CodeBase (code review tool) is complementary. Very active on LinkedIn with 3-4 posts/week about developer productivity. ## Investor Profile - **Current Role:** Partner at Acme Ventures (since 2022) - **Focus Areas:** Developer tools, infrastructure, AI/ML - **Check Size:** $500K - $2M (seed), $2M - $5M (Series A) - **Location:** San Francisco, CA - **Background:** Former engineer at Google, ex-founder (acquired) ## Fit Analysis ### Stage Match: 95% Acme Ventures primarily invests at seed and Series A. Your seed round is squarely in their sweet spot. ### Check Size Fit: 90% Your $1.5M target is within their typical $500K-$2M seed range. ### Sector Alignment: 90% Strong focus on developer tools. Recent investments include: - CodeBase (code review) - 2024 - DevMetrics (engineering analytics) - 2023 - APIHub (API management) - 2023 ### Portfolio Conflicts: None Detected No direct competitors found. CodeBase and DevMetrics could be potential customers or integration partners for TechFlow. ### Activity Level: 85% Very active - 2 investments in last 6 months, posts 3-4x/week on LinkedIn about developer productivity and AI tools. ## Overall Fit Score: 87/100 **Rating:** Excellent Fit **Recommendation:** Priority outreach - strong alignment across all factors ## Recent Activity Highlights 1. Posted about "The future of AI-assisted coding" (2 days ago) 2. Commented on thread about developer productivity tools (5 days ago) 3. Announced investment in DevMetrics Series A (2 weeks ago) 4. Spoke at DevCon about infrastructure investing (1 month ago) ## Recommended Outreach **Best Approach:** LinkedIn DM or warm intro via [mutual connection] **Timing:** Tuesday-Thursday, 9-11 AM PT (most active) **Hook:** Reference her "AI-assisted coding" post ### Personalized Message Hi Sarah, Your post about AI-assisted coding really resonated - especially the part about "tools that enhance rather than replace developer judgment." That's exactly our philosophy at TechFlow. We're building AI-powered code analysis that helps teams ship faster while maintaining quality. Just hit 500 dev teams using our beta with 40% weekly active usage. I noticed your investments in CodeBase and DevMetrics - we're seeing interesting integration opportunities in that space. Would love to share our vision: [Pitch Deck Link] If this sounds interesting, happy to chat: [Calendar Link] Best, [Your Name] ## Next Steps 1. Send LinkedIn connection request with personalized note 2. Engage with her recent post about AI-assisted coding 3. Follow up with outreach message in 2-3 days 4. Prepare answers for likely questions about competitive differentiation ``` ## Troubleshooting #### Investor not found on LinkedIn **Solutions:** - Try different name variations - Search by firm name + role instead - Check if they use a different professional name - Provide LinkedIn URL directly if available #### Fit score seems inaccurate **Solutions:** - Provide more context during onboarding - Specify your exact stage and check size - Clarify your industry/vertical - The skill may lack recent investment data - supplement with manual research #### Portfolio conflict detection missing companies **Solutions:** - Some investments aren't public yet - AngelList/Crunchbase may have more complete data - Ask the investor directly about potential conflicts - Cross-reference with firm's website #### Outreach message too generic **Solutions:** - Provide more specific startup details during onboarding - Include recent milestones or traction - Add pitch deck and calendar links - Ask for regeneration with specific angle #### YC data not loading **Solutions:** - Verify the company/founder name spelling - Check if the company is actually YC-backed - Try searching by batch year - Use alternative data sources for non-YC companies ## Common Use Cases #### Fundraising Prep Build a targeted list of 50-100 investors before starting outreach #### Warm Intro Research Research an investor before asking for introduction #### Meeting Prep Deep-dive before an investor meeting to prepare talking points #### Competitive Intel Research investors who funded your competitors #### Follow-up Strategy Generate personalized follow-up after initial contact #### VC Firm Analysis Understand a firm's thesis and find the right partner to approach ## Related Resources #### Person Analyzer Skill General-purpose person intelligence for any professional #### Competitor Analyzer Skill Analyze competitors, market positioning, and strategic threats #### MCP Server Tools View all available Anysite MCP tools including YC database #### Claude Desktop Setup Install and configure Anysite MCP Server ## Need Help? #### Get Support Contact our support team for assistance with VC Analyst workflows --- **Created by:** Anysite.io **Version:** 1.0 **Last Updated:** January 2026 --- # Clay HTTP API Integration ## Overview Clay's HTTP API enrichment lets you call any external API directly from your table. By connecting Anysite endpoints, you replace Clay's native data credit–consuming enrichments with direct API calls — keeping the same workflow but removing the data credit cost. **What moves off Clay's data credits:** - LinkedIn profiles and company data - Website scraping and content extraction - Twitter/X user data and posts - Company employee search - Reddit, Instagram, YouTube data **What stays in Clay (worth the credits):** - Email verification waterfall - Phone number enrichment > **Requirements:** Clay Growth plan or higher (HTTP API is not available on Starter/Launch). Anysite API key from [app.anysite.io](https://app.anysite.io). ## Step 1: Get Your Anysite API Key #### Sign up at Anysite Go to [app.anysite.io](https://app.anysite.io) and create an account. Free tier includes 1,000 credits to test. #### Copy your API key In the dashboard, find your API key in the **API Key** section. You'll use this as the `access-token` header value in Clay. ## Step 2: Prepare Your Clay Table Create or open a Clay table with your lead data. You need at least one column with identifiers — LinkedIn URLs, company domains, or Twitter handles. Clay table with Domain and LinkedIn URL columns Click **+ Add column** to start adding an enrichment. ## Step 3: Add HTTP API Enrichment Select **Add enrichment** from the column menu, then search for **HTTP API**. Search for HTTP API in Clay enrichment tools Select **HTTP API** (Enrichment · Clay). ## Step 4: Configure the API Call Clay offers two ways to set up the HTTP API connection: **Generate** (AI-assisted) and **Configure** (manual). ### Option A: AI-Generated Setup (Recommended) The **Generate** tab uses Clay's Sculptor AI to automatically configure the API call. Instead of writing the prompt yourself, copy a ready-made prompt from the Anysite API Reference. **1. Open the endpoint page in [Anysite API Reference](/docs/api)** Find the endpoint you need (e.g. `/linkedin/company`) and click the **AI Prompt** button next to the endpoint title. Anysite API Reference — AI Prompt button on endpoint page This copies a detailed prompt with the endpoint URL, authentication method, all parameters, request/response examples, and implementation requirements. **2. Paste the prompt into Clay's Generate field** In the HTTP API dialog, switch to the **Generate** tab and paste the copied prompt into the description field. You don't need to fill in the Documentation URL — the prompt already contains everything Sculptor needs. Clay HTTP API Generate tab — paste the AI prompt Clay Generate API Connection button Click **Generate API Connection**. Sculptor reads the prompt and configures the method, endpoint, headers, and body mapping automatically. **3. Review the generated connection** Generated API connection — Anysite Retrieve LinkedIn Company Profile The generated connection shows: - **access-token** field — paste your Anysite API key here - **company** field — mapped to your table's LinkedIn URL column - **timeout** — optional, leave empty for default (300s) > The **AI Prompt** button is available on every endpoint page in the [API Reference](/docs/api). Use it for any Anysite endpoint — LinkedIn, Twitter, Instagram, Reddit, YouTube, web scraping, and more. ### Option B: Manual Configuration Switch to the **Configure** tab to set up the API call manually. Clay HTTP API manual configuration Fill in: - **Method**: `POST` - **Endpoint**: `https://api.anysite.io/api/linkedin/company` - **Account**: Add HTTP API (Headers) account with `access-token: YOUR_API_KEY` - **Body**: `{"company": "{{linkedin_url_column}}"}` Use the `/` key in any field to insert column references from your table. ## Step 5: Map Response Fields After running the enrichment, Clay returns structured JSON. Use Clay's **JSON path selector** to extract specific fields into new columns: - `$.name` — company name - `$.description` — company description - `$.industry` — industry - `$.employee_count` — employee count - `$.headquarters` — headquarters location - `$.website` — company website ## Common API Configurations ### LinkedIn Company Profile ``` POST https://api.anysite.io/api/linkedin/company Body: { "company": "{{linkedin_url}}" } ``` Returns: name, description, industry, employee count, headquarters, specialties, recent posts. ### LinkedIn Person Profile ``` POST https://api.anysite.io/api/linkedin/user Body: { "user": "{{linkedin_profile_url}}" } ``` Returns: full profile with experience, education, skills, current role. ### Find Decision Makers ``` POST https://api.anysite.io/api/linkedin/search/users Body: { "keywords": "CTO", "company_keywords": "{{company_name}}", "count": 5 } ``` Returns: list of matching profiles with LinkedIn URLs. ### Website Scraping ``` POST https://api.anysite.io/api/webparser/parse Body: { "url": "{{website_url}}", "strip_all_tags": true, "only_main_content": true } ``` Returns: clean text content. Feed into a Clay AI column to extract tech stack, signals, or any structured data. ### Twitter/X User Posts ``` POST https://api.anysite.io/api/twitter/user/posts Body: { "user": "{{twitter_handle}}", "count": 20 } ``` Returns: recent posts with engagement metrics — useful for identifying active companies and buying signals. ### Company Employees ``` POST https://api.anysite.io/api/linkedin/company/employees Body: { "companies": [{ "type": "company", "value": "{{company_urn}}" }], "count": 10 } ``` > Requires company URN from the `/api/linkedin/company` response. Run company enrichment first, extract the URN, then use it here. ## Example Workflow: B2B Lead Enrichment A typical 5-column enrichment pipeline: | Column | Source | What it does | Clay cost | |--------|--------|-------------|-----------| | LinkedIn URL | Input | Your lead list | Free | | Company Data | Anysite API | `POST /api/linkedin/company` | 1 Action | | Person Profile | Anysite API | `POST /api/linkedin/user` | 1 Action | | Website Content | Anysite API | `POST /api/webparser/parse` | 1 Action | | Email | Clay native | Email waterfall enrichment | 1 Action + credits | | AI Summary | Clay AI | Personalized first line | 1 Action | **Result:** Full lead enrichment where only email verification uses Clay data credits. LinkedIn and web scraping are handled by Anysite at API plan cost ($49/mo for ~5,000 calls). ## Cost Comparison For a 1,000-lead monthly workflow with LinkedIn + website + email enrichment: | Approach | Monthly cost | |----------|-------------| | Clay native only (Growth plan) | ~$2,200 | | Clay + Anysite API | ~$375 | The difference comes from eliminating ~15,000 data credits on LinkedIn profiles and website scraping. ## API Reference For complete endpoint documentation with all parameters, types, and constraints: #### API Reference Interactive API documentation with all endpoints #### Full AI Reference Machine-readable reference with all endpoints, parameters, and examples ## Troubleshooting #### HTTP API requires Growth plan or higher Clay's HTTP API enrichment is only available on Growth plan and above. If you see "Feature not available! Please upgrade your plan", you need to upgrade your Clay subscription. **Alternative:** Use [Clay MCP integration](/docs/mcp-server/unlimited-plan-clay) instead — MCP works on all Clay plans that support custom MCP servers. #### 401 Unauthorized errors Anysite uses `access-token` header, **not** `Authorization: Bearer`. When setting up the HTTP API account in Clay: - Header name: `access-token` - Header value: your API key from [app.anysite.io](https://app.anysite.io) #### Empty or missing data in response - Verify the input URL/identifier is correctly formatted - Check that the LinkedIn profile or company page exists and is public - Some profiles may return limited data if they are private - Error code 404 means the entity was not found — verify the URL - Error code 412 means the entity is unavailable (deleted or restricted) See [Error Codes](/docs/error-codes) for the full list. #### Sculptor generates incorrect configuration If the AI-generated setup doesn't work: 1. Switch to the **Configure** tab and set up manually 2. Use the exact endpoint URLs from this guide 3. Make sure `access-token` is set as a header, not a query parameter 4. Verify the JSON body field names match the API documentation #### Rate limits or timeout errors - Default timeout is 300 seconds. Add `"timeout": 600` to the body for slow requests - If you get 429 errors, reduce request frequency or check your plan limits - Check usage at [app.anysite.io](https://app.anysite.io) dashboard ## Next Steps #### Clay MCP Integration Alternative: connect via MCP for unlimited requests ($30/mo) #### All API Endpoints Browse all 50+ endpoints available via HTTP API #### Authentication API key management and authentication details #### Get API Key Sign up and get your API key — 1,000 free credits included --- # Agent Protocol ## Overview Anysite CLI is **agent-native** — it auto-detects when stdout is a pipe or subprocess (non-TTY) and switches all output to structured JSON. No flags, no configuration. AI agents like Claude Code, n8n, Make, and custom scripts get machine-readable responses out of the box. Every command returns: - A **JSON envelope** with `ok`, `result`/`error`, `hints`, and `meta` - **Exit codes** for programmatic flow control - **Error codes** with `retryable` flag and `suggestions` - **Next-step hints** so agents discover follow-up commands without documentation ## Auto-Detection | Context | Default Output | Override | |---------|----------------|----------| | Terminal (TTY) | Human-readable Rich text | `--json` to force JSON | | Pipe / subprocess (no TTY) | Structured JSON envelope | `--human` to force human text | ```bash # In terminal — human-readable output (default) anysite api /api/linkedin/user user=satyanadella # In terminal — force JSON output anysite api /api/linkedin/user user=satyanadella --json # In pipe — JSON automatically anysite api /api/linkedin/user user=satyanadella | jq '.result.name' # In pipe — force human output anysite api /api/linkedin/user user=satyanadella --human | less ``` The `--non-interactive` flag disables interactive prompts (confirmations, selections). It is auto-enabled when stdin is not a TTY. ## JSON Envelope ### Success Response ```json { "ok": true, "result": { "name": "Satya Nadella", "headline": "Chairman and CEO at Microsoft", "follower_count": 12500000 }, "hints": [ { "action": "Get posts", "command": "anysite api /api/linkedin/user/posts user=satyanadella" }, { "action": "Save to database", "command": "anysite db insert mydb --table profiles --stdin" } ], "meta": { "version": "0.3.0", "command": "anysite api /api/linkedin/user" } } ``` ### Error Response ```json { "ok": false, "error": { "code": "AUTH_FAILED", "message": "Authentication failed: invalid or expired API key", "retryable": false, "suggestions": [ "Set API key: anysite config set api_key ", "Or set environment variable: export ANYSITE_API_KEY=" ] }, "meta": { "version": "0.3.0", "command": "anysite api /api/linkedin/user" } } ``` Always check the `ok` field first. Use `error.code` for programmatic handling, `error.retryable` to decide whether to retry, and `error.suggestions` for recovery steps. ## Exit Codes | Code | Meaning | When | |------|---------|------| | 0 | Success | Command completed successfully | | 1 | General error | Unhandled error, server error | | 2 | Usage error | Invalid arguments, missing required parameters | | 3 | Authentication failed | Invalid or expired API key | | 4 | Resource not found | Endpoint, connection, or source not found | | 5 | Network error | Connection failure, timeout, rate limit | ```bash anysite api /api/linkedin/user user=satyanadella case $? in 0) echo "Success" ;; 3) echo "Check your API key" ;; 5) echo "Network issue, retrying..." ;; *) echo "Error: exit code $?" ;; esac ``` ## Error Codes #### API Errors | Error Code | Exit Code | Retryable | Trigger | |------------|-----------|-----------|---------| | `AUTH_FAILED` | 3 | No | Invalid or expired API key | | `RATE_LIMIT` | 5 | Yes | Too many requests | | `NOT_FOUND` | 4 | No | Resource not found | | `VALIDATION_ERROR` | 2 | No | Bad input parameters | | `SERVER_ERROR` | 1 | Yes | API server error | | `NETWORK_ERROR` | 5 | Yes | Connection failure | | `TIMEOUT` | 5 | Yes | Request timeout | #### Database Errors | Error Code | Exit Code | Retryable | Trigger | |------------|-----------|-----------|---------| | `CONNECTION_NOT_FOUND` | 4 | No | Database connection not configured | #### Dataset Errors | Error Code | Exit Code | Retryable | Trigger | |------------|-----------|-----------|---------| | `DATASET_ERROR` | 1 | No | Dataset operation failed | | `SOURCE_NOT_FOUND` | 4 | No | Source not found in dataset config | #### LLM Errors | Error Code | Exit Code | Retryable | Trigger | |------------|-----------|-----------|---------| | `CONFIG_ERROR` | 2 | No | LLM provider not configured | | `LLM_PROVIDER_ERROR` | 1 | Yes | LLM provider failure | ## Hints Every command returns **next-step hints** — suggested follow-up commands based on what you just did. In JSON mode, hints appear in the `hints` array. In human mode, they are printed as dim text on stderr. Agents use hints to discover follow-up actions without consulting documentation: ```bash # Collect hints from response HINTS=$(anysite api /api/linkedin/user user=satyanadella | jq -r '.hints[].command') echo "$HINTS" # anysite api /api/linkedin/user/posts user=satyanadella # anysite db insert mydb --table profiles --stdin ``` ## Discovery Payload Run `anysite` with no arguments in a pipe to get a full discovery payload describing all CLI capabilities: ```bash anysite | jq '.result' ``` The discovery payload includes: | Field | Description | |-------|-------------| | `commands` | All available commands with descriptions and subcommands | | `agent_protocol` | How auto-JSON, `--json`, `--human`, `--non-interactive` work | | `output_schema` | Success and error envelope formats | | `exit_codes` | Machine-readable exit code meanings | | `installed_extras` | Which optional packages are available (`data`, `llm`, `postgres`, `clickhouse`) | This allows an agent to introspect the CLI on first run and plan its workflow without any prior knowledge. ## Built-in Guide The CLI includes a comprehensive dataset configuration guide accessible via the command line: ```bash # Full configuration reference anysite dataset guide # Specific section anysite dataset guide --section sources # Complete example config anysite dataset guide --example advanced # List all available sections and examples anysite dataset guide --list # JSON output for agents anysite dataset guide --json ``` > Agents can use `anysite dataset guide --json` to get a structured reference of all dataset pipeline features, source types, and configuration options. ## Integration Examples ### Pipe to jq ```bash # Extract a specific field anysite api /api/linkedin/user user=satyanadella | jq '.result.follower_count' # Process batch results anysite api /api/linkedin/search/users keywords="CTO" count=10 --json | \ jq -r '.result[] | [.name, .headline] | @csv' ``` ### Shell Script with Error Handling ```bash #!/bin/bash RESPONSE=$(anysite api /api/linkedin/user user="$1" 2>/dev/null) EXIT_CODE=$? if [ $EXIT_CODE -eq 0 ]; then echo "$RESPONSE" | jq '.result' elif [ $EXIT_CODE -eq 3 ]; then echo "Authentication failed. Check your API key." exit 1 elif [ $EXIT_CODE -eq 5 ]; then echo "Network error. Retrying in 5 seconds..." sleep 5 anysite api /api/linkedin/user user="$1" else ERROR=$(echo "$RESPONSE" | jq -r '.error.message') echo "Error: $ERROR" exit $EXIT_CODE fi ``` ### Agent Workflow A typical AI agent workflow with the CLI: ```bash # 1. Discover CLI capabilities anysite | jq '.result.commands' # 2. Discover available endpoints anysite describe --search "linkedin" --json # 3. Inspect specific endpoint anysite describe /api/linkedin/user --json # 4. Execute and parse RESULT=$(anysite api /api/linkedin/user user=satyanadella) echo "$RESULT" | jq '.ok' # true echo "$RESULT" | jq '.hints' # next steps ``` ## Next Steps #### Data Agent AI agent for automated data collection using the agent protocol #### Installation Install the CLI and configure global options --- # Data Agent ## Overview The Data Agent is an AI-powered assistant that helps you collect, process, and analyze web data using natural language. Instead of writing CLI commands manually, describe what data you need — the agent handles endpoint discovery, pipeline configuration, execution, and delivery. The agent operates the **anysite CLI toolkit** and uses the `/anysite-cli` Claude Code skill for technical reference. > Requires the [Claude Code Skill](/docs/cli/installation#claude-code-skill) to be installed. ## How It Works The Data Agent follows these principles: - **Start with the goal, not the tool.** It understands your data need before reaching for commands. "Find me CTOs in fintech" is a data need, not a CLI instruction. - **Make smart defaults.** Chooses reasonable options (format, parallelism, error handling) without asking — unless the choice significantly impacts cost or time. - **Show the work plan.** Before executing anything non-trivial, states what it will do and the approximate number of API calls. - **Prefer simplicity.** A single `anysite api` call beats a full pipeline if it solves the problem. But when scale, dependencies, or repeatability matter — builds a proper pipeline. - **Deliver insight, not just data.** After collecting, summarizes findings, highlights patterns and outliers. - **Suggest next steps.** "Want me to enrich these with seniority level?", "I can set this up as a weekly pipeline", "Should I load this into your database?" ## Workflow ### Step 1: Understand the Data Need The agent parses your request to identify: | Dimension | Question | |-----------|----------| | **Entities** | People, companies, posts, comments, jobs, products? | | **Attributes** | Names? Emails? Follower counts? Sentiment? | | **Scale** | One record, tens, hundreds, thousands? | | **Outcome** | A quick answer, a spreadsheet, a database table, an ongoing pipeline? | **The agent asks questions when:** - The scope is ambiguous and getting it wrong wastes significant credits - Multiple approaches exist with very different tradeoffs - You may be unaware of richer data available from the API **The agent just acts when:** - The request is clear and small-scale - There is an obvious best approach - It can show a sample first and iterate ### Step 2: Discover Endpoints The agent **always discovers endpoints before writing API calls or dataset configs**: ```bash anysite describe # List all available endpoints anysite describe --search "company" # Search by keyword anysite describe /api/linkedin/company # Inspect specific endpoint ``` It maps your data need to specific endpoints. Common chains: - **Search → Detail** — find entities, then get full profiles - **Profile → Posts/Activity** — get a person, then their content - **Company → Employees → Profiles** — organizational deep-dive When the task involves loading data into a database, the agent also discovers the target database structure: ```bash anysite db discover mydb # Schema, tables, columns, indexes, FKs anysite db discover mydb --with-llm # Add LLM-generated descriptions anysite db catalog mydb --json # View saved catalog as JSON ``` The agent can also use the built-in dataset guide for pipeline configuration reference: ```bash anysite dataset guide --section sources # Source types reference anysite dataset guide --example advanced # Complete example config anysite dataset guide --json # Structured JSON for agents ``` ### Step 3: Choose the Right Approach The agent uses this decision tree: ``` One-off lookup of 1-5 items? → anysite api (ad-hoc call) Batch from a known list? Small (< 20) → anysite api --from-file Large (20+) → Dataset pipeline with from_file source Chaining multiple endpoints (search → detail → posts)? → Dataset pipeline with dependent sources Needs to run repeatedly (daily, weekly)? → Dataset pipeline + schedule + incremental One-time large collection? → Dataset pipeline (for progress tracking, error recovery, Parquet storage) ``` **Adds LLM enrichment when:** - You ask for subjective analysis (sentiment, categorization, scoring) - Structured attributes need extraction from free text - Generated content is needed (summaries, outreach messages) - Semantic deduplication is required **Sets up database loading when:** - You want SQL querying after collection - Data will be updated incrementally - Related tables need FK relationships - Uses [Database Discovery](/docs/cli/database/discovery) to understand target DB schema before loading ### Step 4: Execute The agent follows execution rules: - Always `--dry-run` before the first collection of a new pipeline - `parallel: 3-5` as a safe default for batch sources - `on_error: skip` for large batches - `--incremental` for re-runs to avoid duplicate work - `--load-db ` when you want database output ### Step 5: Analyze and Deliver The agent matches delivery format to your need: | Need | Format | |------|--------| | Quick answer | Summarize in conversation | | Spreadsheet | `--format csv --output results.csv` | | Visual table | `--format table` | | Database | `--load-db ` | After delivering, it suggests logical follow-ups based on the collected data. ## Pipeline Patterns The agent uses these ready-made templates as starting points and customizes them for your specific needs. ### Search → Enrich Search for entities, then get full details: ```yaml sources: - id: search endpoint: /api/linkedin/search/users params: { keywords: "CTO fintech", count: 50 } - id: profiles endpoint: /api/linkedin/user dependency: { from_source: search, field: urn.value } input_key: user parallel: 3 storage: format: parquet path: ./data/ ``` ### Multi-Search → Union → Enrich Multiple searches combined, deduplicated, then enriched: ```yaml sources: - id: search_a endpoint: /api/linkedin/search/users params: { keywords: "CTO fintech", count: 50 } - id: search_b endpoint: /api/linkedin/search/users params: { keywords: "VP Engineering fintech", count: 50 } - id: all_results type: union sources: [search_a, search_b] dedupe_by: urn.value - id: profiles endpoint: /api/linkedin/user dependency: { from_source: all_results, field: urn.value } input_key: user parallel: 3 storage: format: parquet path: ./data/ ``` ### Company → Employees → Profiles Deep company intelligence chain: ```yaml sources: - id: company endpoint: /api/linkedin/company params: { company: "anthropic" } - id: employees endpoint: /api/linkedin/company/employees dependency: { from_source: company, field: urn.value } input_key: companies input_template: companies: [{ type: company, value: "{value}" }] count: 50 - id: profiles endpoint: /api/linkedin/user dependency: { from_source: employees, field: internal_id.value } input_key: user parallel: 3 storage: format: parquet path: ./data/ ``` ### From-File Batch Process a user-provided list of identifiers: ```yaml sources: - id: profiles endpoint: /api/linkedin/user from_file: usernames.txt input_key: user parallel: 5 on_error: skip storage: format: parquet path: ./data/ ``` ### Collect + LLM Analysis Collect data, then analyze with LLM in the same pipeline: ```yaml sources: - id: profiles endpoint: /api/linkedin/user from_file: usernames.txt input_key: user parallel: 3 - id: analyzed type: llm dependency: { from_source: profiles, field: name } llm: - type: classify categories: "strong_fit,moderate_fit,weak_fit" output_column: fit fields: [headline, summary, experience] - type: enrich add: - "seniority:junior/mid/senior/executive" - "key_skills:string" fields: [headline, experience] export: - type: file path: ./output/analyzed-{{date}}.csv format: csv storage: format: parquet path: ./data/ ``` ### Incremental Daily Pipeline Scheduled collection that only gets new data: ```yaml sources: - id: search endpoint: /api/linkedin/search/users params: { keywords: "ML engineer", count: 100 } refresh: always - id: profiles endpoint: /api/linkedin/user dependency: { from_source: search, field: urn.value, dedupe: true } input_key: user parallel: 3 db_load: key: urn.value sync: full storage: format: parquet path: ./data/ schedule: cron: "0 9 * * MON-FRI" ``` ### Static Profiles → Fresh Activity Profiles are collected once. Posts and comments are re-fetched every run, with only new records loaded into the database: ```yaml sources: - id: profiles endpoint: /api/linkedin/user from_file: target_profiles.txt input_key: user parallel: 3 - id: posts endpoint: /api/linkedin/user/posts dependency: { from_source: profiles, field: urn.value } input_key: urn input_template: urn: "urn:li:fsd_profile:{value}" count: 20 parallel: 3 refresh: always db_load: key: urn.value sync: append - id: comments endpoint: /api/linkedin/post/comments dependency: { from_source: posts, field: urn.value } input_key: urn input_template: urn: "urn:li:activity:{value}" count: 50 parallel: 3 refresh: always db_load: key: urn.value sync: append storage: format: parquet path: ./data/ schedule: cron: "0 8 * * MON-FRI" ``` ```bash # First run — collects profiles + posts + comments anysite dataset collect dataset.yaml --load-db pg # Daily runs — profiles skipped, only fresh posts & comments collected anysite dataset collect dataset.yaml --incremental --load-db pg ``` ## Key Constraints **API parameters:** - `location`, `current_companies`, `industry` accept ONE name (string) or MULTIPLE URNs (JSON array). A list of names `["Microsoft", "Google"]` does NOT work — use one name or multiple URNs. - Always `anysite describe ` to verify exact param names and types. **Dependency field gotchas:** - Company employees endpoint: use `internal_id.value` or `urn.value` to chain to user profiles, NOT `alias` or `url`. - Nested JSON in Parquet is traversed with dot-notation: `urn.value`, `experience[0].company_urn`. **Performance defaults:** - `parallel: 3-5`, `on_error: skip` for batch sources - `--incremental` for re-runs, `--no-llm` to skip expensive LLM steps **Storage:** - Parquet snapshots at `raw//YYYY-MM-DD.parquet` - `metadata.json` tracks incremental state — use `reset-cursor` to clear ## Quick Start Checklist The agent communicates via the [Agent Protocol](/docs/cli/agent-protocol) — structured JSON output with exit codes, error codes, and next-step hints. When called from a pipe or subprocess, all output is automatically JSON. Before any data task, verify the environment: ```bash anysite --version # CLI available? anysite schema update # Schema cache current? anysite config get api_key # API key configured? anysite db discover # (Optional) Discover target DB schema ``` --- # Executive Search Agent ## Overview The Executive Search Agent automates candidate sourcing for executive and senior positions. It reads job descriptions, builds targeted search strategies, collects candidate data, and delivers AI-analyzed shortlists — all using the anysite CLI. The agent works step-by-step, confirming each stage with you in plain language. > Requires the [Claude Code Skill](/docs/cli/installation#claude-code-skill) and the `/anysite-cli` skill installed. ## Workflow ### Step 1: Analyze Input Materials When you provide a job description (PDF, DOCX, or text), the agent extracts structured search criteria: **Basic Information:** - Position and level (IC / Manager / Director / VP / C-level) - Company and context (size, industry, stage) - Geography and timezone requirements - Compensation range (if specified) **Technical Profile:** - Required technologies/skills - Preferred technologies/skills - Anti-patterns (what we're NOT looking for) **Candidate Profile:** - Target companies for sourcing - Target industries - Tenure pattern (stable / any) - Minimum years of experience **Culture Fit:** - Positive markers - Red flags The agent presents extracted criteria for your confirmation before proceeding: ``` Here's what I understood from the document: Position: VP of Engineering at Acme Corp Location: Germany / UK (remote OK) Level: VP / Director Technical Profile: - Looking for: distributed systems, Kubernetes, Go/Rust - Avoiding: consulting-only backgrounds Target Companies: Stripe, Shopify, GitHub, Intercom Target Industries: SaaS, DevTools, Fintech Culture Fit: - Positive: open-source contributions, technical blog posts - Red flags: very short tenures (< 1 year) Is this correct? Anything to change or add? ``` ### Step 2: Find URNs for Filters Before building the search strategy, the agent finds LinkedIn identifiers needed for precise filtering. **Locations:** ```bash anysite api /api/linkedin/search/locations name="Germany" count=5 --format table anysite api /api/linkedin/search/locations name="United Kingdom" count=5 --format table ``` **Companies:** ```bash anysite api /api/linkedin/company company=intercom --fields "name,urn" anysite api /api/linkedin/search/companies keywords="Shopify" count=5 --format table ``` **Industries:** ```bash anysite api /api/linkedin/search/industries name="Software" count=10 --format table ``` The agent shows found identifiers: ``` Found identifiers for filters: Locations: - Germany: urn:li:geo:101282230 - United Kingdom: urn:li:geo:101165590 Companies: - Intercom: urn:li:company:2491343 - Shopify: urn:li:company:784652 - GitHub: urn:li:company:1418841 Continue with search strategy? ``` ### Step 3: Build Search Strategy Based on the criteria, the agent proposes a strategy using appropriate sources: **Sales Navigator Search** (precise filters, paid) - When: need precise filters by level, tenure, function - Endpoint: `/api/linkedin/sn_search/users` **Regular LinkedIn Search** (keywords, free) - When: keyword search is sufficient - Endpoint: `/api/linkedin/search/users` **Company Employees Search** - When: have a list of target companies - Endpoint: `/api/linkedin/company/employees` The agent presents its plan: ``` Proposed search strategy: Source 1: Sales Navigator search — VP/Director Engineering in Germany/UK - Filters: level, function, geography, past companies - Expected result: ~100 profiles Source 2: Company employees — target companies (Stripe, Shopify, GitHub) - Filter: engineering department - Expected result: ~150 profiles Processing: - Deduplication by URN - Full profile enrichment - LLM analysis for criteria matching Agree with this approach? ``` ### Step 4: Create Pipeline After strategy confirmation, the agent builds a `dataset.yaml` dynamically based on: - Selected search sources - Extracted criteria - Found URNs ```yaml name: vp-engineering-search sources: # Sales Navigator search - id: sn_search endpoint: /api/linkedin/sn_search/users params: keywords: "VP Engineering" location: ["urn:li:geo:101282230", "urn:li:geo:101165590"] current_company: ["urn:li:company:2491343", "urn:li:company:784652"] seniority: ["VP", "Director"] count: 100 on_error: skip # Company employees search - id: target_employees endpoint: /api/linkedin/company/employees from_file: target_companies.txt input_key: companies input_template: companies: [{ type: company, value: "{value}" }] count: 50 parallel: 3 on_error: skip # Combine and deduplicate - id: all_candidates type: union sources: [sn_search, target_employees] dedupe_by: urn.value # Enrich with full profiles - id: profiles endpoint: /api/linkedin/user dependency: from_source: all_candidates field: urn.value dedupe: true input_key: user params: with_experience: true with_skills: true with_education: true parallel: 5 on_error: skip # LLM analysis - id: analyzed type: llm dependency: from_source: profiles field: name llm: # Extract structured attributes - type: enrich add: - "distributed_systems_years:number" - "management_experience_years:number" - "tenure_avg_years:number" - "has_open_source:boolean" - "has_technical_blog:boolean" fields: [name, headline, description, experience, skills] # Classify fit - type: classify categories: "strong_fit,good_fit,maybe,not_fit" output_column: fit_score fields: [headline, experience, skills] # Detailed analysis - type: generate prompt: | You are an expert executive recruiter. Analyze this candidate for: ROLE: VP of Engineering COMPANY: Acme Corp (Series B SaaS, 200 employees) REQUIREMENTS: distributed systems, Kubernetes, Go/Rust, team leadership 50+ CULTURE: open-source, technical depth, stable tenure CANDIDATE: Name: {name} Headline: {headline} Location: {location} Experience: {experience} Skills: {skills} Provide: ## SCORE: [1-10] ## FIT ASSESSMENT (2-3 sentences) ## STRENGTHS ## CONCERNS ## RED FLAGS ## RECOMMENDATION: [STRONG PROCEED / PROCEED / MAYBE / PASS] ## OUTREACH ANGLE (personalized hook for initial contact) output_column: analysis temperature: 0.3 fields: [name, headline, location, experience, skills] export: - type: file path: ./output/candidates_{{date}}.csv format: csv storage: format: parquet path: ./data/ ``` > The LLM analysis prompt is dynamically generated based on the job description. The example above shows the structure — actual content adapts to each search. ### Step 5: Run Collection The agent always does a dry-run first: ```bash # Preview execution plan anysite dataset collect dataset.yaml --dry-run # Full collection after confirmation anysite dataset collect dataset.yaml ``` And reports results: ``` Collection complete! Results: - Sales Navigator search: 87 profiles - Target company employees: 142 profiles - After deduplication: 201 unique candidates - Full profiles enriched: 198 (3 errors skipped) - LLM analysis complete: 198 records Show fit_score distribution? ``` ### Step 6: Analysis and Reporting The agent presents a summary: ``` Candidate Distribution: | Fit Score | Count | % | |--------------|-------|-----| | strong_fit | 12 | 6% | | good_fit | 34 | 17% | | maybe | 68 | 34% | | not_fit | 84 | 43% | Top Candidates (strong_fit): 1. Jane Smith — VP Platform Engineering at Stripe, Berlin Score: 9/10 — 8 years distributed systems, Kubernetes expert, manages 60+ engineers 2. Alex Chen — Director of Engineering at GitHub, London Score: 8/10 — Active open-source contributor, Go/Rust background, led 40-person team 3. Maria Garcia — VP Engineering at Shopify, Remote (UK) Score: 8/10 — Built platform team from 10 to 50, strong K8s expertise What's next? - Show detailed analysis of top candidates? - Export to CSV? - Apply additional filters? - Set up weekly incremental search? ``` ### Step 7: Incremental Updates For repeated runs (e.g., weekly candidate refresh): ```bash anysite dataset collect dataset.yaml --incremental ``` ``` Incremental mode: - Previously collected: 198 candidates - New found: 23 - New enriched and analyzed: 23 - Total now: 221 Show only new candidates? ``` ## Reference Endpoints ### Finding Identifiers ```bash # Locations anysite api /api/linkedin/search/locations name="Germany" count=5 # Companies anysite api /api/linkedin/company company={slug} --fields "name,urn" anysite api /api/linkedin/search/companies keywords="..." count=10 # Industries anysite api /api/linkedin/search/industries name="Software" count=10 ``` ### Candidate Search ```bash # Sales Navigator (precise filters) anysite describe /api/linkedin/sn_search/users # Regular search (keywords) anysite describe /api/linkedin/search/users # Company employees anysite describe /api/linkedin/company/employees ``` ### Profiles ```bash anysite describe /api/linkedin/user ``` ## Key Principles 1. **Always confirm before executing** — especially Sales Navigator searches (expensive) and LLM analysis (token costs) 2. **Adapt the pipeline** to each specific role — search sources, filters, LLM extraction fields, and analysis prompts are all dynamic 3. **Use `--dry-run`** before actual collection runs 4. **Use `--incremental`** for repeated runs to avoid re-collecting existing candidates 5. **Present results in plain language** at every step 6. **Show intermediate results** in readable format — tables for quick scanning, detailed analysis for top candidates --- # API Calls ## Basic Syntax ```bash anysite api [key=value ...] [OPTIONS] ``` Parameters are passed as `key=value` pairs. The CLI automatically converts types based on the cached schema. ## Examples ```bash LinkedIn User anysite api /api/linkedin/user user=satyanadella ``` ```bash LinkedIn Company anysite api /api/linkedin/company company=anthropic ``` ```bash LinkedIn Search anysite api /api/linkedin/search/users keywords="CTO" count=50 ``` ```bash Instagram User anysite api /api/instagram/user user=natgeo ``` ```bash Twitter User anysite api /api/twitter/user user=elonmusk ``` ## Output Formats Control how results are displayed with `--format` (or `-f`): #### JSON (default) ```bash anysite api /api/linkedin/user user=satyanadella --format json ``` ```json { "name": "Satya Nadella", "headline": "Chairman and CEO at Microsoft", "urn": { "value": "ACoAAA8BYqEBCGLg_vT_ca6mMEqkR9bc", "type": "member" }, ... } ``` #### CSV ```bash anysite api /api/linkedin/search/users keywords="CTO" count=10 --format csv ``` Generates a CSV file suitable for spreadsheets and further processing. #### JSONL ```bash anysite api /api/linkedin/company/employees companies=anthropic --format jsonl ``` One JSON object per line — ideal for streaming and piping to other tools. #### Table ```bash anysite api /api/linkedin/user user=satyanadella --format table ``` Human-readable table format for quick visual inspection. ## Field Filtering ### Include Specific Fields Select only the fields you need: ```bash anysite api /api/linkedin/user user=satyanadella --fields "name,headline,urn.value" ``` Supports dot-notation for nested fields. ### Exclude Fields Remove verbose or unnecessary fields: ```bash anysite api /api/linkedin/user user=satyanadella --exclude "certifications,courses,honors" ``` ### Field Presets Use built-in presets for common use cases: ```bash anysite api /api/linkedin/user user=satyanadella --fields-preset minimal anysite api /api/linkedin/user user=satyanadella --fields-preset contact anysite api /api/linkedin/user user=satyanadella --fields-preset recruiting ``` ## Saving Output ### Save to File ```bash anysite api /api/linkedin/search/users keywords="CTO" count=50 \ --format csv --output ctos.csv ``` ### Compact JSON Minify JSON output for smaller file sizes: ```bash anysite api /api/linkedin/user user=satyanadella --compact ``` ### Quiet Mode Suppress progress messages for clean piping: ```bash anysite api /api/linkedin/user user=satyanadella -q --format jsonl ``` ## Piping to Other Tools Combine with database loading or other CLI commands: ```bash # API → Database anysite api /api/linkedin/user user=satyanadella -q --format jsonl | \ anysite db insert mydb --table profiles --stdin --auto-create # API → File anysite api /api/linkedin/search/users keywords="engineer" count=100 \ -q --format csv > engineers.csv # API → jq filtering anysite api /api/linkedin/user user=satyanadella -q | jq '.name, .headline' ``` ## Options Reference | Option | Short | Description | |--------|-------|-------------| | `--format` | `-f` | Output format: `json`, `jsonl`, `csv`, `table` (default: `json`) | | `--fields` | | Include only specified fields (comma-separated, dot-notation) | | `--exclude` | | Exclude specified fields from output | | `--fields-preset` | | Built-in field preset: `minimal`, `contact`, `recruiting` | | `--compact` | | Minify JSON output | | `--output` | `-o` | Save output to file | | `-q` | | Quiet mode — suppress progress messages | ## Next Steps #### Batch Processing Process multiple inputs with parallelism and rate limiting #### Dataset Pipelines Build multi-source workflows with dependency chains --- # Batch Processing ## Overview Batch processing lets you run the same API endpoint against multiple inputs — from a file or stdin — with parallel execution, rate limiting, and configurable error handling. ## Basic Syntax ```bash anysite api --from-file --input-key [OPTIONS] ``` ## Input Sources ### From File Provide a list of inputs in a text file (one per line): ```bash # users.txt satyanadella jeffweiner08 billgates ``` ```bash anysite api /api/linkedin/user --from-file users.txt --input-key user ``` ### From CSV/JSON Files Batch from structured files — the CLI auto-detects the format: ```bash # From CSV (uses specified column) anysite api /api/linkedin/company --from-file companies.csv --input-key company # From JSONL (uses specified field) anysite api /api/linkedin/user --from-file users.jsonl --input-key user ``` ### From Stdin Pipe data directly from other commands: ```bash cat urls.txt | anysite api /api/linkedin/user --input-key user --stdin # Chain with other CLI commands anysite api /api/linkedin/search/users keywords="CTO" count=50 -q --format jsonl | \ jq -r '.urn.value' | \ anysite api /api/linkedin/user --input-key user --stdin ``` ## Parallel Execution Control the number of concurrent workers: ```bash anysite api /api/linkedin/user --from-file users.txt --input-key user \ --parallel 5 ``` > Higher parallelism increases throughput but also API token consumption. Start with 3-5 workers and adjust based on your plan limits. ## Rate Limiting Set a maximum request rate to stay within limits: ```bash anysite api /api/linkedin/user --from-file users.txt --input-key user \ --parallel 5 --rate-limit "10/s" ``` Rate limit formats: - `10/s` — 10 requests per second - `100/m` — 100 requests per minute ## Error Handling Configure behavior when individual requests fail: ```bash anysite api /api/linkedin/user --from-file users.txt --input-key user \ --on-error skip ``` | Strategy | Behavior | |----------|----------| | `stop` | Stop the entire batch on first error (default) | | `skip` | Skip the failed input and continue with the rest | | `retry` | Retry failed requests with exponential backoff | ## Progress and Statistics ### Progress Tracking Show a real-time progress bar: ```bash anysite api /api/linkedin/user --from-file users.txt --input-key user \ --parallel 5 --progress ``` ### Batch Statistics Display summary statistics after completion: ```bash anysite api /api/linkedin/user --from-file users.txt --input-key user \ --parallel 5 --stats ``` Output includes total processed, succeeded, failed, and elapsed time. ## Output Options All [output format options](/docs/cli/api-calls#output-formats) work with batch processing: ```bash # Save batch results to CSV anysite api /api/linkedin/user --from-file users.txt --input-key user \ --parallel 5 --format csv --output results.csv # JSONL for streaming anysite api /api/linkedin/user --from-file users.txt --input-key user \ --parallel 5 --format jsonl --output results.jsonl # Quiet mode for piping anysite api /api/linkedin/user --from-file users.txt --input-key user \ --parallel 5 -q --format jsonl | anysite db insert mydb --table profiles --stdin ``` ## Complete Example Enrich a list of LinkedIn profiles with parallel processing, rate limiting, and error recovery: ```bash anysite api /api/linkedin/user \ --from-file linkedin_urls.txt \ --input-key user \ --parallel 5 \ --rate-limit "10/s" \ --on-error skip \ --progress \ --stats \ --format csv \ --output enriched_profiles.csv ``` ## Options Reference | Option | Description | |--------|-------------| | `--from-file` | Input file path (TXT, CSV, JSON, JSONL) | | `--input-key` | Parameter name to map each input value to | | `--stdin` | Read inputs from stdin instead of file | | `--parallel` | Number of concurrent workers (default: 1) | | `--rate-limit` | Maximum request rate (e.g., `10/s`, `100/m`) | | `--on-error` | Error handling: `stop`, `skip`, `retry` (default: `stop`) | | `--progress` | Show real-time progress bar | | `--stats` | Display batch statistics after completion | ## Next Steps #### Dataset Pipelines Build multi-source workflows with dependency chains and scheduling #### Database Loading Load batch results directly into databases --- # Database Connections ## Overview Anysite CLI can load extracted data directly into databases. It supports **SQLite** (built-in), **PostgreSQL**, and **ClickHouse** (via optional extras). Connections are stored in `~/.anysite/connections.yaml` and can be referenced by name across all CLI commands. ## Supported Databases | Database | Extra Required | Use Case | |----------|---------------|----------| | **SQLite** | None (built-in) | Local development, single-user workflows, prototyping | | **PostgreSQL** | `pip install "anysite-cli[postgres]"` | Production, multi-user, large datasets | | **ClickHouse** | `pip install "anysite-cli[clickhouse]"` | Analytics, columnar storage, large-scale aggregations | ## Add a Connection #### SQLite ```bash anysite db add mydb --type sqlite --database ./data/mydata.db ``` SQLite databases are created automatically if the file doesn't exist. #### PostgreSQL First install the PostgreSQL extra: ```bash pip install "anysite-cli[postgres]" ``` Then add the connection: ```bash anysite db add pg --type postgres \ --host localhost \ --port 5432 \ --database mydb \ --user app \ --password "$DB_PASSWORD" ``` Or reference an existing environment variable directly: ```bash anysite db add pg --type postgres \ --host localhost \ --database mydb \ --user app \ --password-env PGPASS ``` Or use a connection URL from an environment variable: ```bash anysite db add pg --url-env DATABASE_URL ``` #### ClickHouse First install the ClickHouse extra: ```bash pip install "anysite-cli[clickhouse]" ``` Then add the connection: ```bash anysite db add ch --type clickhouse \ --host localhost \ --port 8123 \ --database default \ --user default \ --password "$CH_PASSWORD" ``` Or with SSL (auto-enabled on port 8443): ```bash anysite db add ch --type clickhouse \ --host ch.example.com \ --port 8443 \ --database analytics \ --user app \ --password-env CH_PASS \ --ssl ``` #### Read-Only Mark a connection as read-only to prevent accidental writes (useful for production replicas): ```bash anysite db add replica --type postgres \ --host replica.example.com \ --database mydb \ --user readonly_user \ --password-env REPLICA_PASS \ --read-only ``` Read-only connections block INSERT/UPDATE/DELETE operations. Discovery auto-detects read-only status for PostgreSQL replicas, SQLite files with restricted permissions, and ClickHouse `readonly` system setting. > Use `--password-env` to reference an environment variable instead of passing passwords directly. The CLI stores connection details in `~/.anysite/connections.yaml` with passwords stored as env var references. ## Manage Connections ```bash # List all connections anysite db list # Test a connection anysite db test pg # Remove a connection anysite db remove pg ``` ## Connection Reference ### SQLite Options | Option | Description | Default | |--------|-------------|---------| | `--type` | `sqlite` | Required | | `--database` | Path to the SQLite database file | Required | ### PostgreSQL Options | Option | Description | Default | |--------|-------------|---------| | `--type` | `postgres` | Required | | `--host` | Database host | `localhost` | | `--port` | Database port | `5432` | | `--database` | Database name | Required | | `--user` | Username | Required | | `--password` | Password (prefer `--password-env`) | — | | `--password-env` | Environment variable name containing the password | — | | `--url-env` | Environment variable containing the full connection URL | — | | `--read-only` | Mark connection as read-only (blocks writes) | `false` | ### ClickHouse Options | Option | Description | Default | |--------|-------------|---------| | `--type` | `clickhouse` | Required | | `--host` | Database host | `localhost` | | `--port` | HTTP port | `8123` | | `--database` | Database name | `default` | | `--user` | Username | — | | `--password` | Password (prefer `--password-env`) | — | | `--password-env` | Environment variable name containing the password | — | | `--ssl` | Enable SSL (auto-enabled on port 8443) | `false` | | `--read-only` | Mark connection as read-only (blocks writes) | `false` | > ClickHouse uses the HTTP protocol via [clickhouse-connect](https://clickhouse.com/docs/en/integrations/python). The default engine for auto-created tables is `MergeTree()`. ## Next Steps #### Database Discovery Auto-discover database structure and browse saved catalogs #### Database Operations Insert, query, and sync data with your databases --- # Database Discovery & Catalog ## Overview Before loading or querying data, it helps to understand what is already in your database. The **discovery** commands introspect any connected SQLite, PostgreSQL, or ClickHouse database and build a detailed structural catalog — tables, columns, types, indexes, foreign keys, row counts, and sample data. Optionally enrich the catalog with LLM-generated descriptions for instant context. Discovered catalogs are saved locally and can be browsed anytime — useful for AI agents that need database context without manual documentation. ## Discover Database Structure Run discovery against any configured connection: ```bash anysite db discover mydb ``` This introspects the database and outputs: - **Tables** with row counts - **Columns** — name, type, nullability, defaults, primary keys - **Indexes** — name, columns, uniqueness - **Foreign keys** — source and target columns - **Sample data** — first rows from each table - **Read-only status** — auto-detected (PostgreSQL replicas, read-only filesystems, ClickHouse `readonly` setting) The result is automatically saved as a catalog for future reference. > Discovery works with SQLite (via PRAGMAs), PostgreSQL (via `information_schema` and `pg_catalog`), and ClickHouse (via `system.tables` and `system.columns`). Note: ClickHouse does not support foreign keys, so FK discovery returns empty results. ## LLM Enrichment Add human-readable descriptions to your catalog using an LLM: ```bash anysite db discover mydb --with-llm ``` > Requires the LLM extra: `pip install "anysite-cli[llm]"` and a configured LLM provider (`anysite llm setup`). LLM enrichment adds four layers of context: | Layer | What It Generates | |-------|-------------------| | **Table descriptions** | Purpose and role of each table | | **Column descriptions** | Semantic meaning of each column | | **Implicit relationships** | Naming-pattern detection (e.g., `user_id` → `users.id`) beyond declared FKs | | **Database description** | Overall summary of the database structure and purpose | This context is saved in the catalog and can be injected into LLM prompts via `to_context_string()`. ## Filtering Tables Control which tables to discover: ```bash # Discover specific tables only anysite db discover mydb --tables users,posts,comments # Exclude internal tables anysite db discover mydb --exclude-tables _migrations,django_session # Control sample data rows (default: 3) anysite db discover mydb --sample-rows 10 ``` ### Discovery Options | Option | Description | Default | |--------|-------------|---------| | `--tables` | Comma-separated list of tables to include | All tables | | `--exclude-tables` | Comma-separated list of tables to skip | None | | `--sample-rows` | Number of sample rows per table | 3 | | `--with-llm` | Enrich with LLM-generated descriptions | Off | ## Browse Saved Catalogs After discovery, catalogs are saved at `~/.anysite/catalogs/.yaml` and can be browsed anytime: ```bash # List all saved catalogs anysite db catalog # View a specific catalog anysite db catalog mydb # View a single table from the catalog anysite db catalog mydb --table users # JSON output (for agents and scripts) anysite db catalog mydb --json ``` > Use `anysite db catalog mydb --json` to pipe database context into AI agents. The JSON format includes all tables, columns, relationships, and LLM descriptions — everything an agent needs to understand your data. ## Commands Reference | Command | Description | |---------|-------------| | `anysite db discover ` | Discover and save database structure | | `anysite db discover --with-llm` | Discover with LLM-generated descriptions | | `anysite db discover --tables t1,t2` | Discover specific tables only | | `anysite db discover --exclude-tables t1` | Exclude tables from discovery | | `anysite db discover --sample-rows N` | Control sample data rows | | `anysite db catalog` | List all saved catalogs | | `anysite db catalog ` | View saved catalog for a connection | | `anysite db catalog --table ` | View a specific table from catalog | | `anysite db catalog --json` | Output catalog as JSON | ## Next Steps #### Database Operations Insert, query, and sync data with your databases #### Agent Protocol Structured JSON output for AI agent integration --- # Database Operations ## Insert Data ### From Stdin Pipe API results directly into a database: ```bash # Single profile → database anysite api /api/linkedin/user user=satyanadella -q --format jsonl | \ anysite db insert mydb --table profiles --stdin --auto-create # Batch results → database anysite api /api/linkedin/user --from-file users.txt --input-key user \ --parallel 5 -q --format jsonl | \ anysite db insert mydb --table profiles --stdin --auto-create ``` ### From File Load a previously saved file: ```bash anysite db insert mydb --table profiles --file results.jsonl --auto-create ``` ### Auto-Create Tables With `--auto-create`, the CLI automatically infers the schema from the JSON data and creates the table if it doesn't exist. Column types are determined from the data values. > The `--auto-create` flag is safe to use repeatedly — it only creates the table on the first run, then inserts into the existing table on subsequent runs. ## Upsert (Insert or Update) Update existing records or insert new ones based on a unique key: ```bash # Upsert with conflict handling cat updates.jsonl | \ anysite db upsert mydb --table profiles --conflict-columns id --stdin # Or use the insert command with --upsert flag cat updated_profiles.jsonl | \ anysite db insert mydb --table profiles --stdin --auto-create --upsert --key urn_value ``` The upsert performs an INSERT on new records and UPDATE on existing ones based on the specified key/conflict columns. ## Inspect Schema View the table schema in your database: ```bash anysite db schema mydb --table profiles ``` ## Query Data Run SQL queries against your database: ```bash # Query with table output anysite db query mydb --sql "SELECT name, headline FROM profiles LIMIT 10" --format table # Export query results to CSV anysite db query mydb --sql "SELECT * FROM profiles WHERE industry = 'Technology'" \ --format csv --output tech_profiles.csv # Count records anysite db query mydb --sql "SELECT COUNT(*) FROM profiles" ``` ## Dataset Loading Load data from a collected dataset pipeline directly into a database: ```bash # Load all sources into database (creates tables per source) anysite dataset load-db dataset.yaml -c mydb # Drop existing tables and reload anysite dataset load-db dataset.yaml -c mydb --drop-existing # Load a specific snapshot date anysite dataset load-db dataset.yaml -c mydb --snapshot 2026-01-15 # Auto-load during collection anysite dataset collect dataset.yaml --load-db mydb ``` Each source in the pipeline becomes a separate table in the database, named after the source ID. ## Diff-Based Sync Compare collected data with what's already in the database and apply incremental updates: ```bash anysite dataset diff dataset.yaml --source profiles --key urn.value # Diff with specific fields anysite dataset diff dataset.yaml --source profiles --key urn.value --fields "name,headline" ``` This shows: - **New records** — present in dataset but not in database - **Updated records** — present in both but with different values - **Deleted records** — present in database but not in latest dataset > ClickHouse uses ALTER TABLE mutations for diff-sync updates. Transactions are not supported — each batch insert is applied directly. ## Auto-Schema and Foreign Keys The CLI automatically: - **Infers column types** from JSON data (string, integer, float, boolean, timestamp) - **Flattens nested objects** using underscore notation (e.g., `urn.value` → `urn_value`) - **Tracks provenance** — links between parent and dependent source tables using foreign key references ## Complete Pipeline-to-Database Example ```bash # Step 1: Collect data anysite dataset collect dataset.yaml # Step 2: Load into PostgreSQL anysite dataset load-db dataset.yaml -c pg # Step 3: Query the results anysite db query pg --sql " SELECT p.name, p.headline, e.company_name FROM profiles p JOIN employees e ON p.urn_value = e.urn_value LIMIT 20 " --format table # Or do it all in one command: anysite dataset collect dataset.yaml --load-db pg ``` ## Operations Reference | Command | Description | |---------|-------------| | `anysite db insert --table --stdin` | Insert data from stdin | | `anysite db insert --table --file ` | Insert data from file | | `anysite db insert ... --auto-create` | Auto-create table from data | | `anysite db insert ... --upsert --key ` | Upsert on unique key | | `anysite db upsert --table --conflict-columns ` | Upsert with conflict handling | | `anysite db schema --table ` | Inspect table schema | | `anysite db query --sql "..."` | Run SQL query | | `anysite db query --sql "..." --format csv` | Export query to CSV | | `anysite dataset load-db -c ` | Load dataset into database | | `anysite dataset load-db -c --drop-existing` | Reload with fresh tables | | `anysite dataset load-db -c --snapshot ` | Load a specific snapshot | | `anysite dataset diff --source --key ` | Show diff between dataset and DB | | `anysite dataset diff ... --fields "name,headline"` | Diff with specific fields | ## Next Steps #### LLM Analysis Enrich your data with AI-powered classification and summarization #### SQL Querying Query collected datasets with DuckDB SQL --- # Dataset Pipelines ## Overview Dataset pipelines let you define multi-source data collection workflows in YAML. Sources can depend on each other, forming chains like: **search → company profiles → employees → posts**. The CLI handles execution order, parallelism, error handling, and data storage automatically. > Dataset pipelines require the `data` extra: `pip install "anysite-cli[data]"` ## Create a Pipeline Initialize a new dataset: ```bash anysite dataset init my-dataset ``` This creates a `dataset.yaml` file with a starter configuration: ```yaml name: my-dataset description: My data collection pipeline sources: - id: search_results endpoint: /api/linkedin/search/users params: keywords: "software engineer" count: 50 parallel: 1 rate_limit: "10/s" on_error: stop storage: format: parquet path: ./data/ ``` ## Run Collection ```bash # Full collection anysite dataset collect dataset.yaml # Preview what will be collected (no API calls) anysite dataset collect dataset.yaml --dry-run # Collect a specific source only anysite dataset collect dataset.yaml --source search_results # Skip LLM processing steps anysite dataset collect dataset.yaml --no-llm ``` ## Multi-Source Pipeline Example A more complex pipeline with dependency chains: ```yaml name: competitor-research description: Collect and analyze competitor company data sources: # Step 1: Search for companies - id: companies endpoint: /api/linkedin/search/companies params: keywords: "AI startup" count: 100 parallel: 1 # Step 2: Get employee list for each company (depends on Step 1) - id: employees endpoint: /api/linkedin/company/employees dependency: from_source: companies field: urn.value dedupe: true input_key: companies parallel: 3 rate_limit: "10/s" # Step 3: Get full profiles for each employee (depends on Step 2) - id: profiles endpoint: /api/linkedin/user dependency: from_source: employees field: urn.value input_key: user parallel: 5 rate_limit: "10/s" on_error: skip storage: format: parquet path: ./data/ ``` The CLI automatically resolves the dependency graph and executes sources in the correct order. ## Pipeline Configuration Reference | Field | Description | |-------|-------------| | `name` | Pipeline name (used for history and logging) | | `description` | Optional description | | `sources` | List of data sources (see [Source Types](/docs/cli/datasets/source-types)) | | `storage.format` | Output format: `parquet` (default), `json`, `jsonl`, `csv` | | `storage.path` | Output directory (default: `./data/`) | | `schedule.cron` | Cron expression for automated runs (see [Scheduling](/docs/cli/datasets/scheduling)) | | `notifications` | Webhook URLs for success/failure events | ## Dataset Commands | Command | Description | |---------|-------------| | `anysite dataset init ` | Create a new dataset with starter YAML | | `anysite dataset collect ` | Run the collection pipeline | | `anysite dataset collect --dry-run` | Preview execution plan without API calls | | `anysite dataset collect --incremental` | Skip previously collected inputs | | `anysite dataset collect --source ` | Collect a single source | | `anysite dataset status ` | Check collection status | | `anysite dataset collect --load-db ` | Auto-load results into a database | | `anysite dataset query --sql "..."` | Query collected data with SQL | | `anysite dataset stats ` | Show collection statistics | | `anysite dataset history ` | View run history | | `anysite dataset logs --run ` | View logs for a specific run | | `anysite dataset reset-cursor ` | Reset incremental collection cursors | ## Next Steps #### Source Types Learn about the 5 source types: independent, from_file, dependent, union, and LLM #### Scheduling Set up incremental collection, cron scheduling, and webhook notifications --- # Scheduling & Automation ## Incremental Collection By default, the CLI collects all inputs every time you run `anysite dataset collect`. With incremental mode, it tracks what has already been collected and skips those inputs on subsequent runs. ### Enable Incremental Mode ```bash # First run: collects everything anysite dataset collect dataset.yaml # Subsequent runs: only collects new inputs anysite dataset collect dataset.yaml --incremental ``` The CLI stores cursor data in a `metadata.json` file alongside your dataset, tracking which inputs have been processed. ### Per-Source Refresh Control Control incremental behavior for each source: ```yaml sources: - id: companies endpoint: /api/linkedin/search/companies params: { keywords: "AI startup", count: 100 } refresh: always # Always re-collect (time-sensitive data) - id: employees endpoint: /api/linkedin/company/employees dependency: { from_source: companies, field: urn.value } input_key: companies refresh: auto # Respect --incremental flag (default) ``` | Value | Behavior | |-------|----------| | `auto` | Respects the `--incremental` flag (default) | | `always` | Always re-collects, even with `--incremental` | > Use `refresh: always` for search results, trending content, or any data that changes frequently. Use `refresh: auto` for static data like user profiles. ### Reset Cursors To start fresh and re-collect everything: ```bash anysite dataset reset-cursor dataset.yaml ``` ## Scheduling Automate data collection with cron expressions in your pipeline configuration: ```yaml name: daily-monitoring description: Daily competitor monitoring pipeline sources: - id: competitor_posts endpoint: /api/linkedin/company/posts from_file: competitors.txt input_key: company parallel: 3 schedule: cron: "0 9 * * *" # Every day at 9:00 AM storage: format: parquet path: ./data/ ``` ### Start Scheduled Collection ```bash anysite dataset schedule dataset.yaml --incremental --load-db pg ``` This starts the scheduler which runs the pipeline according to the cron expression. Each run is logged with a unique run ID. ### Common Cron Expressions | Expression | Schedule | |------------|----------| | `0 9 * * *` | Daily at 9:00 AM | | `0 */6 * * *` | Every 6 hours | | `0 9 * * 1` | Every Monday at 9:00 AM | | `0 9 1 * *` | First day of each month at 9:00 AM | | `*/30 * * * *` | Every 30 minutes | ## Webhook Notifications Get notified when pipeline runs complete or fail: ```yaml notifications: on_complete: - url: "https://hooks.slack.com/services/xxx/yyy/zzz" on_failure: - url: "https://alerts.example.com/anysite-failure" ``` Notifications include: - Pipeline name and run ID - Collection status (success/failure) - Number of records collected per source - Execution duration and error details (on failure) ## Run History and Logs ### View Run History ```bash anysite dataset history my-dataset ``` Shows a list of all runs with status, timestamp, records collected, and duration. ### View Run Logs ```bash anysite dataset logs my-dataset --run 42 ``` Shows detailed logs for a specific run, including per-source progress and any errors. ## Auto-Load to Database Combine scheduling with database loading for a fully automated pipeline: ```bash anysite dataset schedule dataset.yaml \ --incremental \ --load-db pg ``` This automatically loads collected data into the specified database connection after each run. See [Database Operations](/docs/cli/database/operations) for database configuration. ## Complete Automated Pipeline Example ```yaml name: lead-monitoring description: Automated lead discovery and enrichment sources: - id: search endpoint: /api/linkedin/search/users params: keywords: "Head of Engineering" count: 100 refresh: always - id: profiles endpoint: /api/linkedin/user dependency: { from_source: search, field: urn.value } input_key: user parallel: 5 rate_limit: "10/s" on_error: skip refresh: auto - id: enriched type: llm dependency: { from_source: profiles, field: name } llm: - type: classify categories: "high_priority,medium,low" output_column: lead_score storage: format: parquet path: ./data/ schedule: cron: "0 9 * * 1" # Every Monday at 9 AM notifications: on_complete: - url: "https://hooks.slack.com/services/xxx" on_failure: - url: "https://alerts.example.com/fail" ``` ## Next Steps #### Database Connections Set up SQLite, PostgreSQL, or ClickHouse connections for data storage #### LLM Analysis Add AI-powered enrichment to your pipelines --- # Source Types ## Overview Dataset pipelines support 5 source types, each designed for a different data collection pattern. Sources can be combined to build complex multi-step workflows. | Type | Purpose | Key Config | |------|---------|------------| | **Independent** | Single API call with static parameters | `endpoint`, `params` | | **From File** | Batch calls iterating over a file | `from_file`, `input_key` | | **Dependent** | Batch calls using values from a parent source | `dependency`, `input_key` | | **Union** | Combine records from multiple sources | `type: union`, `sources` | | **LLM** | Process data through an LLM model | `type: llm`, `llm` | ## Independent Source A single API call with static parameters. Use this for searches, listings, or any one-off data extraction. ```yaml sources: - id: search_results endpoint: /api/linkedin/search/users params: keywords: "CTO" count: 50 parallel: 1 rate_limit: "10/s" on_error: stop ``` **When to use:** Starting point for pipelines, search queries, single profile lookups. ## From File Source Batch API calls driven by inputs from an external file. Each line/row in the file becomes a separate API request. ```yaml sources: - id: company_profiles endpoint: /api/linkedin/company from_file: companies.txt input_key: company parallel: 3 rate_limit: "10/s" on_error: skip ``` Supported file formats: - **TXT** — one value per line - **CSV** — uses the column matching `input_key` - **JSON/JSONL** — uses the field matching `input_key` **When to use:** You have a pre-existing list of URLs, IDs, or search terms. ## Dependent Source Batch API calls that use output from a parent source. The dependency chain is resolved automatically — the parent source runs first, and its results feed into the dependent source. ```yaml sources: - id: companies endpoint: /api/linkedin/search/companies params: keywords: "AI startup" count: 100 - id: employees endpoint: /api/linkedin/company/employees dependency: from_source: companies field: urn.value dedupe: true input_key: companies parallel: 3 rate_limit: "10/s" on_error: skip refresh: auto ``` ### Dependency Configuration | Field | Description | |-------|-------------| | `from_source` | ID of the parent source | | `field` | Field path to extract from parent results (dot-notation supported) | | `dedupe` | Remove duplicate values before processing (default: `false`) | **Multi-level chains** are supported — a dependent source can itself be the parent of another dependent source: ```yaml sources: - id: companies endpoint: /api/linkedin/search/companies params: { keywords: "AI", count: 50 } - id: employees endpoint: /api/linkedin/company/employees dependency: { from_source: companies, field: urn.value } input_key: companies - id: profiles endpoint: /api/linkedin/user dependency: { from_source: employees, field: urn.value } input_key: user - id: posts endpoint: /api/linkedin/user/posts dependency: { from_source: profiles, field: urn.value } input_key: user ``` **When to use:** Multi-step data enrichment, going from search results to detailed profiles to activity data. ## Union Source Combines records from multiple parent sources into a single dataset. Optionally deduplicates records by a specified field. ```yaml sources: - id: search_cto endpoint: /api/linkedin/search/users params: { keywords: "CTO", count: 50 } - id: search_vp endpoint: /api/linkedin/search/users params: { keywords: "VP Engineering", count: 50 } - id: all_leaders type: union sources: [search_cto, search_vp] dedupe_by: urn.value ``` ### Union Configuration | Field | Description | |-------|-------------| | `type` | Must be `union` | | `sources` | List of source IDs to combine | | `dedupe_by` | Field to deduplicate by (optional) | **When to use:** Merging results from multiple searches, combining data from different platforms. ## LLM Source Processes data from a parent source through LLM operations — without making any API calls. Use this for classification, summarization, enrichment, and more. ```yaml sources: - id: profiles endpoint: /api/linkedin/user from_file: users.txt input_key: user - id: profiles_analyzed type: llm dependency: from_source: profiles field: name llm: - type: classify categories: "developer,recruiter,executive,other" output_column: role_type - type: enrich add: - "seniority:junior/mid/senior/lead" - "is_technical:boolean" - type: summarize max_length: 50 output_column: bio_summary ``` ### LLM Operations | Operation | Description | |-----------|-------------| | `classify` | Categorize records into predefined categories | | `enrich` | Extract new attributes (enums, strings, booleans, numbers) | | `summarize` | Generate concise summaries | | `generate` | Create text using templates with field placeholders | > LLM sources require the `llm` extra: `pip install "anysite-cli[llm]"`. See [LLM Analysis](/docs/cli/llm-analysis) for detailed configuration. **When to use:** Adding AI-powered enrichment to your pipeline, categorizing or summarizing collected data. ## Per-Source Transform & Export Sources can include post-collection transforms and exports: ```yaml sources: - id: companies endpoint: /api/linkedin/company from_file: companies.txt input_key: company transform: filter: '.employee_count > 10' fields: [name, url, employee_count] add_columns: batch: "q1-2026" export: - type: file path: ./output/companies-{{date}}.csv format: csv db_load: key: _input_value sync: full fields: [name, url, employee_count] ``` ### Transform Options | Field | Description | |-------|-------------| | `filter` | jq-style filter expression to keep matching records | | `fields` | List of fields to include in the output | | `add_columns` | Static columns to add to every record | ### Export Options | Field | Description | |-------|-------------| | `type` | Export type: `file` or `webhook` | | `path` | Output file path (supports `{{date}}` template) | | `format` | Export format: `csv`, `json`, `jsonl` | ### Database Load Options (per-source) | Field | Description | |-------|-------------| | `key` | Unique key column for incremental sync | | `sync` | Sync mode: `full` (default, includes DELETE) or `append` (no DELETE) | | `fields` | Fields to load into the database | ## Input Templates For endpoints that require complex input structures, use `input_template`: ```yaml sources: - id: employees endpoint: /api/linkedin/company/employees dependency: from_source: companies field: urn.value input_key: companies input_template: companies: - type: company value: "{value}" count: 5 ``` The `{value}` placeholder is replaced with each input value from the dependency. ## Common Source Options These options apply to all API-based source types (independent, from_file, dependent): | Option | Description | Default | |--------|-------------|---------| | `parallel` | Number of concurrent workers | `1` | | `rate_limit` | Maximum request rate (e.g., `"10/s"`) | No limit | | `on_error` | Error handling: `stop`, `skip`, `retry` | `stop` | | `refresh` | Incremental behavior: `auto`, `always` | `auto` | ## Next Steps #### Scheduling Set up incremental collection, cron scheduling, and webhooks #### Database Loading Load pipeline results into SQLite, PostgreSQL, or ClickHouse --- # Endpoint Discovery ## Overview Before making API calls, use `anysite describe` to discover available endpoints, explore their parameters, and understand the expected input/output formats. ## List All Endpoints ```bash anysite describe ``` This displays a categorized list of all 118+ available endpoints grouped by platform (LinkedIn, Instagram, Twitter/X, Reddit, YouTube, etc.). ## Search Endpoints Find endpoints by keyword: ```bash anysite describe --search "linkedin" anysite describe --search "company" anysite describe --search "search" ``` **Example output:** ``` Found 5 endpoints matching "company": /api/linkedin/company Get LinkedIn company profile /api/linkedin/company/employees Get company employees /api/linkedin/company/posts Get company posts /api/linkedin/search/companies Search LinkedIn companies /api/instagram/user Get Instagram user profile ``` ## Inspect Endpoint Details Get full details about a specific endpoint: ```bash anysite describe /api/linkedin/company ``` **Example output:** ``` Endpoint: /api/linkedin/company Method: POST Description: Get LinkedIn company profile Parameters: company (string, required) - Company URL or identifier Response fields: name, description, industry, specialties, employeeCount, headquarter, logo, ... ``` ### JSON Output Get endpoint details in JSON format for automation: ```bash anysite describe /api/linkedin/company --json ``` ## Common Endpoint Categories | Category | Examples | Endpoint Count | |----------|----------|----------------| | **LinkedIn** | Users, companies, posts, search, employees | 39+ | | **Instagram** | Profiles, posts, comments, followers | 10+ | | **Twitter/X** | Users, tweets, search, followers | 10+ | | **Reddit** | Subreddits, posts, comments, users | 8+ | | **YouTube** | Channels, videos, comments, search | 8+ | | **GitHub** | Repositories, users, organizations | 5+ | | **Google** | Search, news, maps | 5+ | | **Amazon** | Products, reviews, search | 5+ | | **SEC EDGAR** | Filings, companies | 3+ | | **Other** | Web parsing, Trustpilot, Y Combinator, etc. | 20+ | > Always run `anysite describe` before building dataset pipelines or batch jobs to verify endpoint names and required parameters. ## Next Steps #### Single API Calls Make your first data extraction request #### Batch Processing Process multiple inputs in parallel --- # Examples ## Lead Enrichment Pipeline Collect LinkedIn profiles from a search, enrich them with LLM analysis, and load results into PostgreSQL. #### Create the pipeline ```yaml dataset.yaml name: lead-enrichment description: Find and qualify engineering leads sources: - id: search endpoint: /api/linkedin/search/users params: keywords: "Head of Engineering" count: 200 parallel: 1 - id: profiles endpoint: /api/linkedin/user dependency: from_source: search field: urn.value input_key: user parallel: 5 rate_limit: "10/s" on_error: skip - id: qualified type: llm dependency: from_source: profiles field: name llm: - type: classify categories: "high_priority,medium,low" output_column: lead_score - type: enrich add: - "seniority:junior/mid/senior/lead/executive" - "is_technical:boolean" - "team_size:small/medium/large" - type: summarize max_length: 30 output_column: quick_bio storage: format: parquet path: ./data/ ``` #### Run the collection ```bash anysite dataset collect dataset.yaml ``` #### Load into PostgreSQL ```bash anysite dataset load-db dataset.yaml -c pg ``` #### Query the results ```bash anysite db query pg --sql " SELECT name, headline, lead_score, seniority, quick_bio FROM qualified WHERE lead_score = 'high_priority' AND is_technical = true ORDER BY name " --format table ``` --- ## Competitor Monitoring Track competitor companies, their employees, and recent posts on a weekly schedule. #### Create a competitors file ```text competitors.txt anthropic openai google-deepmind mistral-ai ``` #### Define the pipeline ```yaml competitor-monitor.yaml name: competitor-monitor description: Weekly competitor intelligence sources: - id: companies endpoint: /api/linkedin/company from_file: competitors.txt input_key: company parallel: 2 refresh: always - id: recent_posts endpoint: /api/linkedin/company/posts dependency: from_source: companies field: urn.value input_key: company parallel: 3 rate_limit: "10/s" refresh: always - id: key_employees endpoint: /api/linkedin/company/employees dependency: from_source: companies field: urn.value input_key: companies parallel: 3 rate_limit: "10/s" refresh: auto - id: post_analysis type: llm dependency: from_source: recent_posts field: text llm: - type: classify categories: "product_launch,hiring,partnership,thought_leadership,other" output_column: post_type - type: summarize max_length: 30 output_column: summary storage: format: parquet path: ./data/ schedule: cron: "0 9 * * 1" notifications: on_complete: - url: "https://hooks.slack.com/services/xxx" ``` #### Start the scheduled collection ```bash anysite dataset schedule competitor-monitor.yaml --incremental --load-db pg ``` #### Analyze the data ```bash # What are competitors posting about? anysite dataset query competitor-monitor.yaml --sql " SELECT c.name as company, pa.post_type, COUNT(*) as count FROM post_analysis pa JOIN companies c ON pa.company_id = c.urn_value GROUP BY c.name, pa.post_type ORDER BY c.name, count DESC " --format table # New hires this week anysite dataset query competitor-monitor.yaml --sql " SELECT name, headline, company_name FROM key_employees ORDER BY collected_at DESC LIMIT 20 " --format table ``` --- ## Multi-Platform Research Collect data from LinkedIn, Twitter, and GitHub for a set of people, merge the results, and export a unified dataset. #### Define the pipeline ```yaml research.yaml name: multi-platform-research description: Cross-platform person research sources: - id: linkedin_profiles endpoint: /api/linkedin/user from_file: people.txt input_key: user parallel: 3 rate_limit: "10/s" on_error: skip - id: twitter_profiles endpoint: /api/twitter/user from_file: twitter_handles.txt input_key: user parallel: 3 rate_limit: "10/s" on_error: skip - id: github_profiles endpoint: /api/github/user from_file: github_users.txt input_key: user parallel: 3 on_error: skip - id: all_profiles type: union sources: [linkedin_profiles, twitter_profiles, github_profiles] storage: format: parquet path: ./data/ ``` #### Collect and query ```bash # Collect all sources anysite dataset collect research.yaml # Query the unified dataset anysite dataset query research.yaml --sql " SELECT * FROM all_profiles " --format csv --output unified_research.csv # Get statistics anysite dataset stats research.yaml ``` --- ## Quick One-Liners Common tasks that don't need a full pipeline: ```bash # Enrich a single profile and save to database anysite api /api/linkedin/user user=satyanadella -q --format jsonl | \ anysite db insert mydb --table profiles --stdin --auto-create # Batch process a CSV of companies anysite api /api/linkedin/company --from-file companies.csv --input-key company \ --parallel 5 --rate-limit "10/s" --on-error skip \ --format csv --output company_profiles.csv # Search and export in one command anysite api /api/linkedin/search/users keywords="AI researcher" count=100 \ --format csv --output ai_researchers.csv # Quick database query anysite db query pg --sql "SELECT name, headline FROM profiles WHERE headline LIKE '%CEO%'" \ --format table ``` --- # Installation ## Installation #### One-Line Installer The fastest way to install — no Python or Homebrew required (macOS / Linux): ```bash curl -fsSL https://raw.githubusercontent.com/anysiteio/anysite-cli/main/install.sh | bash ``` This installs all extras by default (datasets, LLM, PostgreSQL, ClickHouse). Options: ```bash # Minimal install (no optional dependencies) curl -fsSL https://raw.githubusercontent.com/anysiteio/anysite-cli/main/install.sh | bash -s -- --extras none # Upgrade existing installation curl -fsSL https://raw.githubusercontent.com/anysiteio/anysite-cli/main/install.sh | bash -s -- --upgrade # Uninstall curl -fsSL https://raw.githubusercontent.com/anysiteio/anysite-cli/main/install.sh | bash -s -- --uninstall ``` #### Homebrew ```bash brew tap anysiteio/cli https://github.com/anysiteio/anysite-cli brew install anysite ``` #### pip ```bash pip install anysite-cli ``` > Requires **Python 3.11** or higher. #### From Source ```bash git clone https://github.com/anysiteio/anysite-cli.git cd anysite-cli python -m venv .venv source .venv/bin/activate pip install -e . ``` ### Optional Extras Install additional capabilities based on your needs: | Package | Command | What It Adds | |---------|---------|--------------| | **Data** | `pip install "anysite-cli[data]"` | DuckDB + PyArrow for dataset pipelines and SQL querying | | **LLM** | `pip install "anysite-cli[llm]"` | LLM analysis with OpenAI and Anthropic models | | **PostgreSQL** | `pip install "anysite-cli[postgres]"` | PostgreSQL database adapter | | **ClickHouse** | `pip install "anysite-cli[clickhouse]"` | ClickHouse database adapter | | **All** | `pip install "anysite-cli[all]"` | All optional dependencies | ### Verify Installation ```bash anysite --version ``` ## Configuration ### Set Your API Key Get your API key from [app.anysite.io](https://app.anysite.io) and configure it: ```bash anysite config set api_key YOUR_API_KEY ``` ### Update Schema Cache The schema cache enables endpoint discovery and automatic type conversion: ```bash anysite schema update ``` ### Configuration Management ```bash # View all settings anysite config list # Get a specific setting anysite config get api_key # Set a value anysite config set api_key sk-xxxxx # Show config file path anysite config path # Reset to defaults anysite config reset ``` ### Configuration Priority Settings are resolved in this order (highest priority first): 1. **CLI flags** — `--format csv`, `--parallel 5` 2. **Environment variables** — `ANYSITE_API_KEY` 3. **Config file** — `~/.anysite/config.yaml` 4. **Defaults** — built-in default values > Use environment variables for CI/CD environments and the config file for local development. ## Claude Code Skill Install the anysite-cli skill for [Claude Code](/docs/mcp-server/claude-code-tool/installation) to get AI-assisted data collection directly in your terminal: #### Add the skills marketplace ```bash /plugin marketplace add https://github.com/anysiteio/agent-skills ``` #### Install the skill ```bash /plugin install anysite-cli@anysite-skills ``` The skill gives Claude Code full knowledge of all anysite commands, dataset pipeline configuration, database operations, and LLM analysis — so you can describe what data you need in natural language and let the agent build and run the pipeline for you. ## Global Options These options are available for all commands: ```bash anysite [OPTIONS] COMMAND Options: --api-key TEXT API key (or set ANYSITE_API_KEY) --base-url TEXT API base URL --debug Enable debug output --no-color Disable colored output --json Force JSON output (even in terminal) --human Force human-readable output (even in pipes) --non-interactive Disable interactive prompts --version, -v Show version --help Show help ``` > The `--json` and `--human` flags control [Agent Protocol](/docs/cli/agent-protocol) output mode. By default, the CLI auto-detects: JSON in pipes, human-readable in terminals. ## Troubleshooting #### Command not found: anysite Make sure the Python scripts directory is in your `PATH`. If you installed in a virtual environment, activate it first: ```bash source .venv/bin/activate ``` Or install globally: ```bash pip install --user anysite-cli ``` #### Python version error Anysite CLI requires Python 3.11+. Check your version: ```bash python3 --version ``` Consider using [pyenv](https://github.com/pyenv/pyenv) to manage multiple Python versions. #### Schema update fails If `anysite schema update` fails, check your API key and network connection: ```bash anysite config get api_key curl -s https://api.anysite.io/openapi.json | head -c 100 ``` #### Permission denied on install Use a virtual environment or the `--user` flag: ```bash python -m venv .venv && source .venv/bin/activate pip install anysite-cli ``` ## Next Steps #### Discover Endpoints Browse and search 118+ available API endpoints #### Make API Calls Start extracting data with single API requests --- # LLM Analysis ## Overview Anysite CLI integrates with LLM providers to add AI-powered analysis to your data workflows. Six operations are available: classify, summarize, enrich, generate, match, and deduplicate. > Requires the `llm` extra: `pip install "anysite-cli[llm]"` ## Setup Configure your LLM provider: ```bash anysite llm setup ``` This guides you through selecting a provider and entering your API key. ### Supported Providers | Provider | Default Model | Configuration | |----------|---------------|---------------| | **OpenAI** | gpt-4.1-mini | Uses JSON Schema for structured output | | **Anthropic** | claude-sonnet-4-5-20250514 | Uses system prompts with JSON schema | Provider settings are stored in `~/.anysite/config.yaml`. ## Operations ### Classify Categorize records into predefined categories: ```bash anysite llm classify dataset.yaml --source profiles \ --categories "developer,recruiter,executive,other" \ --fields "name,headline,summary" ``` If `--categories` is omitted, the LLM auto-detects 3-7 appropriate categories based on the data. ### Summarize Generate concise summaries: ```bash anysite llm summarize dataset.yaml --source profiles \ --fields "name,headline,summary,experience" \ --max-length 50 \ --output-column bio_summary ``` ### Enrich Extract new structured attributes from text data: ```bash anysite llm enrich dataset.yaml --source profiles \ --add "seniority:junior/mid/senior/lead" \ --add "is_technical:boolean" \ --add "years_experience:number" \ --add "primary_skill:string" ``` Supported attribute types: - **Enum** — predefined choices: `"seniority:junior/mid/senior"` - **Boolean** — true/false: `"is_technical:boolean"` - **Number** — numeric value: `"years_experience:number"` - **String** — free text: `"primary_skill:string"` ### Generate Create new text using templates with field placeholders: ```bash anysite llm generate dataset.yaml --source profiles \ --prompt "Write a 2-sentence professional intro for {name} who works as {headline}" \ --temperature 0.7 \ --output-column intro_text ``` ### Match Compare records across two sources and find best matches: ```bash anysite llm match dataset.yaml \ --source-a profiles \ --source-b companies \ --top-k 3 ``` Returns the top K matches for each record in source A, with relevance scores. ### Deduplicate Find and flag semantic duplicates within a source: ```bash anysite llm deduplicate dataset.yaml --source profiles \ --key name \ --threshold 0.8 ``` Records with similarity above the threshold are flagged as potential duplicates. ## Using LLM in Dataset Pipelines Add LLM processing directly in your pipeline YAML: ```yaml sources: - id: profiles endpoint: /api/linkedin/user from_file: users.txt input_key: user - id: profiles_enriched type: llm dependency: from_source: profiles field: name llm: - type: classify categories: "developer,recruiter,executive,sales,other" output_column: role_type - type: enrich add: - "seniority:junior/mid/senior/lead" - "is_technical:boolean" - type: summarize max_length: 50 output_column: bio_summary ``` Multiple LLM steps can be chained within a single LLM source. They execute in order, each adding new columns to the dataset. ## Caching LLM results are cached in a local SQLite database (`~/.anysite/llm_cache.db`) to avoid repeated API calls and reduce costs. ```bash # View cache statistics anysite llm cache-stats # Clear the cache anysite llm cache-clear # Bypass cache for a single run anysite llm classify dataset.yaml --source profiles \ --categories "dev,recruiter,exec" --no-cache ``` > Caching is especially useful when iterating on pipeline configurations — you only pay for LLM calls once per unique input. ## Options Reference | Option | Description | Applies To | |--------|-------------|------------| | `--fields` | Fields to include in LLM context (comma-separated) | classify, summarize | | `--categories` | Comma-separated categories | classify | | `--add` | Attribute to extract (repeatable) | enrich | | `--prompt` | Template with `{field}` placeholders | generate | | `--temperature` | LLM creativity (0.0-1.0) | generate | | `--max-length` | Max words for output | summarize | | `--output-column` | Name for the result column | all | | `--top-k` | Number of matches per record | match | | `--key` | Field to compare for duplicates | deduplicate | | `--threshold` | Similarity threshold (0.0-1.0) | deduplicate | | `--no-cache` | Skip the LLM cache | all | ## Next Steps #### SQL Querying Query and analyze your enriched data with DuckDB SQL #### Examples See complete end-to-end workflow examples --- # Anysite CLI
Anysite CLI
## What is Anysite CLI? Anysite CLI is a powerful command-line toolkit that gives you full control over web data — from extraction to analysis to database loading. It supports **3,600+ endpoints** across 600+ data sources including LinkedIn, Instagram, Twitter/X, Reddit, YouTube, ProductHunt, Google, GitHub, Amazon, SEC EDGAR, and more. #### GitHub Repository Source code, issues, and contributions — MIT licensed #### Single API Calls Make instant API requests with flexible output formats and field filtering #### Batch Processing Process thousands of inputs in parallel with rate limiting and error handling #### Dataset Pipelines Build declarative YAML workflows with chained dependencies and scheduling #### Database Integration Load data into SQLite, PostgreSQL, or ClickHouse with auto-schema and diff-sync #### Database Discovery Auto-discover database structure and browse saved catalogs #### LLM Analysis Classify, summarize, enrich, and deduplicate data using AI models #### SQL Querying Query collected datasets with DuckDB SQL and generate analytics #### Agent Protocol Structured JSON output, exit codes, and discovery for AI agents #### Agent Examples AI agents for automated data collection and executive search ## Quick Start Get up and running in 60 seconds: #### Install the CLI ```bash curl -fsSL https://raw.githubusercontent.com/anysiteio/anysite-cli/main/install.sh | bash ``` Or via pip: `pip install anysite-cli` — see [Installation](/docs/cli/installation) for all methods. #### Configure your API key Get your API key from [app.anysite.io](https://app.anysite.io) and configure it: ```bash anysite config set api_key YOUR_API_KEY ``` #### Update the schema cache ```bash anysite schema update ``` #### Make your first request ```bash anysite api /api/linkedin/user user=satyanadella ``` ## Key Capabilities | Feature | Description | |---------|-------------| | **3,600+ Endpoints** | Access data from LinkedIn, Instagram, Twitter/X, Reddit, YouTube, ProductHunt, Google, GitHub, Amazon, and more | | **Flexible Output** | JSON, JSONL, CSV, and table formats with field selection and exclusion | | **Batch Processing** | Parallel execution with rate limiting and configurable error handling | | **Dataset Pipelines** | YAML-based multi-source workflows with dependency chains | | **Database Loading** | Auto-schema creation, upsert, and diff-sync for SQLite, PostgreSQL, and ClickHouse | | **LLM Analysis** | Classify, summarize, enrich, generate, match, and deduplicate records | | **Incremental Collection** | Resume from where you left off with cursor tracking | | **Database Discovery** | Auto-discover database structure, LLM-enriched catalogs | | **Agent Protocol** | Auto-JSON in pipes, structured errors, exit codes, discovery payload | | **Scheduling** | Cron-based automation with webhook notifications | ## How It Fits in the Anysite Ecosystem #### REST API Direct HTTP API for programmatic integration into your applications #### MCP Server AI agent integration via Model Context Protocol for Claude, Cursor, and other tools #### n8n Nodes Visual workflow automation with drag-and-drop nodes ## Claude Code Skill Want AI to build and run pipelines for you? Install the anysite-cli skill for Claude Code: ```bash /plugin marketplace add https://github.com/anysiteio/agent-skills /plugin install anysite-cli@anysite-skills ``` The skill gives Claude Code full knowledge of all anysite commands — describe what data you need in natural language and let the agent handle the rest. See [Installation](/docs/cli/installation#claude-code-skill) for details. > Anysite CLI is ideal when you need programmatic control, reproducible pipelines, or want to integrate data extraction into scripts and CI/CD workflows. --- # Querying & Analytics ## Overview After collecting data with dataset pipelines, you can query it using SQL powered by DuckDB. This works directly on Parquet files — no separate database needed. > Requires the `data` extra: `pip install "anysite-cli[data]"` ## SQL Queries Run SQL against your collected dataset: ```bash anysite dataset query dataset.yaml \ --sql "SELECT name, headline FROM profiles LIMIT 10" ``` ### Query a Specific Source ```bash anysite dataset query dataset.yaml \ --source profiles \ --fields "name, headline, urn.value AS id" ``` ### Complex Queries ```bash # Aggregation anysite dataset query dataset.yaml \ --sql "SELECT industry, COUNT(*) as count FROM companies GROUP BY industry ORDER BY count DESC" # Joins across sources anysite dataset query dataset.yaml \ --sql " SELECT p.name, p.headline, c.name as company FROM profiles p JOIN employees e ON p.urn_value = e.urn_value JOIN companies c ON e.company_id = c.urn_value LIMIT 20 " # Filtering anysite dataset query dataset.yaml \ --sql "SELECT * FROM profiles WHERE headline LIKE '%CTO%' OR headline LIKE '%CEO%'" ``` ## Interactive Mode Launch an interactive SQL shell: ```bash anysite dataset query dataset.yaml --interactive ``` This opens a DuckDB shell with all your dataset sources available as tables. Type SQL queries and see results instantly. ## Dataset Statistics Get a summary of collected data: ```bash anysite dataset stats dataset.yaml ``` Shows per-source: - Number of records collected - Collection timestamp - File size - Column list with types ### Source-Level Stats ```bash anysite dataset stats dataset.yaml --source profiles ``` ## Dataset Profiling Generate a statistical profile of your data: ```bash anysite dataset profile dataset.yaml ``` Includes: - Column-level statistics (min, max, mean, median, null count) - Value distributions for categorical columns - Data quality indicators ## Output Formats Query results support the same output formats as API calls: ```bash # Table (default for queries) anysite dataset query dataset.yaml --sql "SELECT * FROM profiles LIMIT 5" --format table # CSV export anysite dataset query dataset.yaml --sql "SELECT * FROM profiles" --format csv --output report.csv # JSON anysite dataset query dataset.yaml --sql "SELECT * FROM profiles" --format json # JSONL anysite dataset query dataset.yaml --sql "SELECT * FROM profiles" --format jsonl ``` ## Commands Reference | Command | Description | |---------|-------------| | `anysite dataset query --sql "..."` | Run SQL query on collected data | | `anysite dataset query --source ` | Query a specific source | | `anysite dataset query --interactive` | Open interactive SQL shell | | `anysite dataset stats ` | Show dataset statistics | | `anysite dataset stats --source ` | Show stats for a specific source | | `anysite dataset profile ` | Generate data profile with distributions | ## Next Steps #### Examples See complete end-to-end workflow examples #### Database Loading Load query results into a persistent database --- # Data Sources & Capabilities Anysite turns the public web into structured data. Instead of writing scrapers and fighting anti-bot systems, you call a single API and get clean JSON back — whether you need a LinkedIn profile, a company's official filings, a product's reviews, or the comments under a YouTube video. This page is a plain-language tour of **what you can actually do** with each source. For exact parameters and response schemas, every section links to the full [API Reference](/docs/api). #### 600+ Data Sources Social, professional, financial, commercial, and official-registry data #### 3,600+ Endpoints Ready-to-use methods — no scraping, no proxies, no maintenance #### One Integration REST API, MCP Server, CLI, or n8n — same data everywhere --- ## Professional & Social Networks The core of Anysite. Reach people, companies, content, and engagement across every major platform. ### LinkedIn Our deepest source — **36 endpoints** covering people, companies, and content. This is the backbone of sales prospecting, recruiting, and B2B research. **People.** Pull a full profile (experience, education, skills, certifications, honors, patents, languages) from a URL or name. Go further with a person's posts, comments, reactions, and the people who endorsed their skills. **Companies.** Get a company profile, headcount and employee statistics, the actual list of employees, and everything the company has posted. **Search.** Find people, companies, jobs, and posts with rich filters — plus helper lookups for industries, locations, and schools to build precise queries. Sales Navigator-grade people search is included. **Email finder.** Discover and verify a person's work email from their profile or LinkedIn URL — ideal for outbound enrichment. #### LinkedIn endpoints Profiles, companies, posts, search, Sales Navigator, and email finder ### Instagram **8 endpoints** for creator and brand intelligence. Get a user's profile, their posts and reels, and their followers/following. Drill into any single post to read its comments and see who liked it. Search posts by keyword or hashtag to track campaigns and trends. ### Twitter / X **4 endpoints** for real-time social listening. Pull a user's profile and full timeline, and search both posts and accounts by keyword — perfect for monitoring conversations, sentiment, and competitors. ### Reddit **11 endpoints** for community and sentiment research. Read posts and their comment trees, profile any user (their posts and comments), and explore subreddits — including popular ones and a subreddit's full feed. Search across posts, subreddits, and users to find exactly the discussions you care about. ### TikTok **10 endpoints** for short-video and social-commerce intelligence. Get user profiles and their videos, pull any individual video with its comments, and search videos by keyword to spot trends and viral content. Plus **TikTok Shop**: look up shops and their catalogs, and pull product details, reviews, and search. ### YouTube **14 endpoints** — the most complete video source. Explore a channel's videos, shorts, live streams, playlists, and community posts. Open any video for its details, comments, and full subtitles/transcript (great for feeding into LLMs). Search channels, playlists, and videos directly. ### Facebook **8 endpoints** across two areas. **Ad Library:** look up advertisers, browse the ads they're running, and search ads or advertisers by keyword — the fastest way to monitor competitor advertising and creative strategy. **Marketplace:** pull listings, browse by category, and search for local-commerce and pricing intelligence. --- ## Startups, Companies & Official Registries From early-stage startups to public-company filings — verified, structured company data. ### Y Combinator **3 endpoints** for startup intelligence. Get a YC company profile, and search both companies and founders across every batch — useful for VC sourcing, competitive mapping, and recruiting from top startups. ### Crunchbase **3 endpoints** for funding and investor data. Pull a company profile or search the Crunchbase database to understand rounds, investors, and growth signals. ### Product Hunt **23 endpoints** — the entire Product Hunt ecosystem. Track products (details, search, reviews, alternatives, customers, launch history), daily launches and their comments, leaderboards, collections, topics, categories, and discussion forums. Profile makers and users down to their launches, upvotes, collections, comments, and tech stacks. A goldmine for product research and trend-spotting. ### Companies House (UK) **8 endpoints** straight from the UK's official company register. Look up a company's profile, filing history, charges, officers, and persons with significant control (beneficial owners). Search companies and officers by name. Authoritative, court-grade data. ### OpenCorporates **2 endpoints** for global corporate lookup. Find a company profile or search across the world's largest open database of company records. ### SEC (US) **2 endpoints** for US public-company research. Search companies and retrieve their SEC filing documents — 10-Ks, 8-Ks, and more — for financial and due-diligence work. ### GitHub **16 endpoints** for developer and technology intelligence. Look up repositories with their commits, contributors, releases, issues, and pull requests. Profile users and organizations and list their repos. Search repos, users, and issues across GitHub — ideal for technical recruiting, OSS ecosystem analysis, and tracking project activity. --- ## Search & Web When you need the open web — search engines, maps, and a universal parser for anything else. ### Google **35 endpoints** — the broadest Google footprint anywhere. **Maps:** find and search places, read photos, reviews, and reviewer profiles. **Finance:** quotes, historical prices, financials, ratings, news, earnings-call transcripts, and even congressional trades. **Flights & Hotels:** search flights and a price calendar; find hotels with prices, photos, and reviews. **Play Store:** apps, charts, reviews, developers, and search. **Patents** and **Ads transparency** round it out. Local-business, market, travel, and app-store intelligence from a single source. ### Yahoo **7 endpoints** combining a general search engine and finance data. Search the web, news, images, and videos — plus **Yahoo Finance** for stock quotes, historical price data, and ticker search. ### DuckDuckGo **1 endpoint** for privacy-friendly web search results — a clean, no-tracking alternative when you just need links and snippets. ### Web Parser **2 endpoints** that make *any* website a data source. Point the parser at a URL and get structured content back, or pull a site's full sitemap to discover every page. This is the universal fallback when no dedicated source exists. #### Universal scraping Web Parser turns any page into structured JSON --- ## Marketplaces & Product Reviews E-commerce listings, sellers, and software-review platforms. ### Amazon **5 endpoints** for product and seller research. Get product details and offers, search products, and look up sellers and their catalogs — for pricing intelligence, MAP monitoring, and market analysis. ### Mercari **2 endpoints** for the Japanese marketplace — item details and item search. ### Capterra **3 endpoints** for software buyers. Pull a product's details and its reviews, and search the Capterra catalog — competitive intelligence for SaaS. ### G2 **1 endpoint** to search G2's software-product directory — complementary review-site signal alongside Capterra. --- ## Complete Source Catalog The sections above are guided tours of the flagship sources. Below is the **complete catalog** — every source available today, grouped by category, with its current endpoint count. All of them are reachable through the same REST API, MCP Server, CLI, and n8n integrations. > Counts are live as of the latest release and grow continuously. For the authoritative, always-current list with full request/response schemas, see the [API Reference](/docs/api). ### Professional & Social Networks *35 sources · 370 endpoints* **LinkedIn** (42) · **Twitter / X** (26) · **Instagram** (19) · **Social Blade** (19) · **ArtStation** (17) · **DeviantArt** (15) · **YouTube** (14) · **Behance** (13) · **Kick** (13) · **Mastodon** (13) · **Vimeo** (13) · **Reddit** (11) · **Blind** (10) · **TikTok** (10) · **Twitch** (10) · **VK** (10) · **XING** (10) · **Dribbble** (9) · **Niconico** (9) · **Pinterest** (9) · **Bilibili** (8) · **Bluesky** (8) · **Dailymotion** (8) · **Facebook** (8) · **Threads** (8) · **Nextdoor** (7) · **Weibo** (7) · **Douyin** (5) · **Discord** (4) · **Telegram** (3) · **Tumblr** (3) · **WeChat** (3) · **Snapchat** (2) · **Strava** (2) · **Xiaohongshu (RED)** (2) ### News, Publishing & Communities *61 sources · 506 endpoints* **MusicBrainz** (32) · **TMDB** (32) · **Letterboxd** (22) · **Qiita** (20) · **Zenn** (19) · **Deutsche Welle (DW)** (16) · **Yonhap News** (16) · **HK01** (15) · **Goodreads** (13) · **Pikabu** (13) · **Spotify** (12) · **Hatena Bookmark** (11) · **IMDb** (11) · **Habr** (10) · **Medium** (10) · **Rotten Tomatoes** (10) · **5ch** (9) · **NPR** (9) · **RuTube** (9) · **Stack Exchange** (9) · **Wikidata** (9) · **Fandom** (8) · **Kinopoisk** (8) · **The Guardian** (8) · **El País** (7) · **Le Monde** (7) · **The New York Times** (7) · **VC.ru** (7) · **Wikimedia Commons** (7) · **Wikipedia** (7) · **Ameblo** (6) · **France 24** (6) · **Ground News** (6) · **Hacker News** (6) · **note** (6) · **TechCrunch** (6) · **Techmeme** (6) · **The Verge** (6) · **Al Jazeera** (5) · **Ars Technica** (5) · **Axios** (5) · **Handelsblatt** (5) · **Interfax** (5) · **Kommersant** (5) · **NHK** (5) · **Substack** (5) · **DBpedia** (4) · **GDELT** (4) · **Jiji Press** (4) · **Kyodo News** (4) · **Quora** (4) · **Yomiuri Shimbun** (4) · **Asahi Shimbun** (3) · **Corriere della Sera** (3) · **Der Spiegel** (3) · **Mainichi Shimbun** (3) · **Politico** (3) · **Semafor** (2) · **TED** (2) · **BBC** (1) · **Reuters** (1) ### Startups, Products & Funding *13 sources · 88 endpoints* **Product Hunt** (23) · **Patreon** (10) · **Tracxn** (10) · **Indie Hackers** (8) · **BetaList** (7) · **Kickstarter** (6) · **Seedrs** (5) · **Owler** (4) · **Crunchbase** (3) · **GoFundMe** (3) · **Indiegogo** (3) · **Wefunder** (3) · **Y Combinator** (3) ### Company Registries & Compliance *51 sources · 227 endpoints* **Za Chestnyi Biznes** (14) · **USAspending** (11) · **Infogreffe** (9) · **Companies House** (8) · **CRO (Ireland)** (8) · **GAS Pravosudie** (8) · **Brønnøysund Register (Norway)** (7) · **Handelsregister** (7) · **KRS** (7) · **List-Org** (7) · **PB Nalog** (7) · **Rusprofile** (7) · **ARES (Czech Republic)** (6) · **Cerlive** (6) · **SAM.gov** (6) · **Zauba** (6) · **Zefix (Switzerland)** (6) · **FINMA** (5) · **OpenSanctions** (5) · **BO Nalog** (4) · **CONDUSEF (Mexico)** (4) · **Fedresurs** (4) · **FINRA** (4) · **IAPD** (4) · **KBO/BCE (Belgium)** (4) · **PRH (Finland)** (4) · **RUES (Colombia)** (4) · **Sirene** (4) · **BORME (Spain)** (3) · **ICIJ Offshore Leaks** (3) · **Kontur.Focus** (3) · **OFAC** (3) · **Rosreestr** (3) · **SAT (Mexico)** (3) · **SEC** (3) · **SPARK** (3) · **ACRA (Singapore)** (2) · **CAC (Nigeria)** (2) · **Casebook** (2) · **Estonian Business Register** (2) · **Firmenbuch (Austria)** (2) · **Houjin Bangou** (2) · **NZBN (New Zealand)** (2) · **OpenCorporates** (2) · **RMSP (SME Registry)** (2) · **SBIS** (2) · **SEDAR+** (2) · **Tianyancha** (2) · **CNPJ (Brazil)** (1) · **ONRC** (1) · **Pappers** (1) ### US State Business Registries *29 sources · 74 endpoints* **Arizona** (4) · **California** (4) · **District of Columbia** (4) · **Kentucky** (4) · **Colorado** (3) · **Florida** (3) · **Georgia** (3) · **Maine** (3) · **Massachusetts** (3) · **Missouri** (3) · **New York** (3) · **Rhode Island** (3) · **South Carolina** (3) · **Utah** (3) · **Alabama** (2) · **Arkansas** (2) · **Connecticut** (2) · **Delaware** (2) · **Hawaii** (2) · **Idaho** (2) · **Iowa** (2) · **Minnesota** (2) · **New Hampshire** (2) · **New Mexico** (2) · **North Dakota** (2) · **Texas** (2) · **West Virginia** (2) · **New Jersey** (1) · **Oklahoma** (1) ### Government & Open Data *17 sources · 98 endpoints* **openFDA** (16) · **CMS Open Payments** (10) · **Federal Register** (8) · **OpenSecrets** (8) · **World Bank** (8) · **UN Comtrade** (7) · **CMS Medicare** (6) · **NHS** (6) · **Data.gov** (5) · **US Census** (5) · **Bank for International Settlements (BIS)** (3) · **Eurostat** (3) · **FRED** (3) · **IMF** (3) · **OECD** (3) · **EU Open Data** (2) · **NPI Registry** (2) ### Intellectual Property & Patents *7 sources · 25 endpoints* **KIPRIS (Korea)** (8) · **FIPS (Rospatent)** (6) · **WIPO Brand Database** (3) · **EUIPO** (2) · **J-PlatPat (Japan)** (2) · **PATENTSCOPE** (2) · **USPTO Trademarks** (2) ### Legal *3 sources · 18 endpoints* **CourtListener** (10) · **Avvo** (5) · **Justia** (3) ### Finance, Markets & Prediction *21 sources · 159 endpoints* **Japan Exchange (JPX)** (13) · **MOEX (Moscow Exchange)** (12) · **TradingView** (12) · **CoinGlass** (11) · **Bank of Russia (CBR)** (10) · **Morningstar** (10) · **Kalshi** (9) · **NASDAQ** (9) · **Polymarket** (9) · **Sravni** (9) · **Finviz** (7) · **MarketWatch** (7) · **StockTwits** (7) · **Banki.ru** (6) · **Investing.com** (6) · **European Central Bank (ECB)** (5) · **Macrotrends** (5) · **Trading Economics** (5) · **OpenFIGI** (3) · **Stooq** (3) · **Seeking Alpha** (1) ### Crypto & Web3 *16 sources · 177 endpoints* **Solscan** (17) · **Dune Analytics** (15) · **DappRadar** (14) · **Snapshot** (13) · **Magic Eden** (12) · **OpenSea** (12) · **Blur** (11) · **DeFiLlama** (11) · **Messari** (11) · **Binance** (10) · **DeBank** (10) · **L2BEAT** (10) · **Zerion** (9) · **CoinMarketCap** (8) · **CoinGecko** (7) · **GoPlus** (7) ### Developer, Tech & Infrastructure *42 sources · 252 endpoints* **AlienVault OTX** (21) · **GitHub** (16) · **Hugging Face** (15) · **bgp.tools** (14) · **Bitbucket** (10) · **crates.io** (10) · **HackerOne** (9) · **ModelScope** (8) · **StackShare** (8) · **Aptoide** (7) · **Packagist** (7) · **SourceForge** (7) · **Anaconda** (6) · **Civitai** (6) · **GitLab** (6) · **Go Packages** (6) · **Microsoft Store** (6) · **NuGet** (6) · **Replicate** (6) · **APKPure** (5) · **App Store** (5) · **Docker Hub** (5) · **Have I Been Pwned** (5) · **Homebrew** (5) · **RDAP** (5) · **Samsung Galaxy Store** (5) · **CRAN** (4) · **Kaggle** (4) · **Maven Central** (4) · **npm** (4) · **NVD** (4) · **AppBrain** (3) · **F-Droid** (3) · **Ollama** (3) · **PyPI** (3) · **Apify** (2) · **crt.sh** (2) · **SSL Labs** (2) · **Wappalyzer** (2) · **GreyNoise** (1) · **Libraries.io** (1) · **SecurityHeaders** (1) ### Search, Maps & Web *21 sources · 142 endpoints* **Google** (40) · **Yahoo** (25) · **Ubersuggest** (15) · **Open-Meteo** (8) · **Naver** (7) · **2GIS** (6) · **OpenStreetMap** (5) · **PagesJaunes** (5) · **Yandex Maps** (5) · **Yellow Pages** (5) · **Yell** (4) · **Bing** (3) · **OpenWeatherMap** (3) · **Web Parser** (3) · **Wayback Machine** (2) · **Baidu** (1) · **Brave Search** (1) · **DuckDuckGo** (1) · **SimilarWeb** (1) · **Startpage** (1) · **Yandex Search** (1) ### Marketplaces & E-commerce *101 sources · 568 endpoints* **Rakuma** (11) · **Sofmap** (11) · **Bic Camera** (10) · **IsThereAnyDeal** (10) · **PayPay Flea Market** (10) · **Poshmark** (10) · **Revolve** (10) · **Discogs** (9) · **Kaufland** (9) · **Kijiji** (9) · **Yodobashi** (9) · **Amazon** (8) · **eBay** (8) · **Faire** (8) · **Falabella** (8) · **Goo-net** (8) · **Grailed** (8) · **Hepsiburada** (8) · **Jimoty** (8) · **Joshin** (8) · **MISUMI** (8) · **noon** (8) · **Reverb** (8) · **Tokopedia** (8) · **11Street** (7) · **CarSensor** (7) · **Leboncoin** (7) · **n11** (7) · **Newegg** (7) · **OLX** (7) · **Wildberries** (7) · **Auto.ru** (6) · **Best Buy** (6) · **Blibli** (6) · **CarGurus** (6) · **Coolblue** (6) · **Craigslist** (6) · **Drom** (6) · **Epic Games** (6) · **Gmarket** (6) · **Gumtree** (6) · **Kleinanzeigen** (6) · **LOHACO** (6) · **Made-in-China** (6) · **Marktplaats** (6) · **Rakuten** (6) · **SteamDB** (6) · **Target** (6) · **Trendyol** (6) · **ASKUL** (5) · **ASOS** (5) · **AutoScout24** (5) · **Avito** (5) · **bol.com** (5) · **Chrono24** (5) · **DHgate** (5) · **GoodRx** (5) · **itch.io** (5) · **John Lewis** (5) · **Jumia** (5) · **Kakaku** (5) · **MonotaRO** (5) · **PC Koubou** (5) · **Pets Place** (5) · **Qoo10** (5) · **TSUKUMO** (5) · **Walmart** (5) · **Yahoo Shopping** (5) · **Yandex Market** (5) · **Back Market** (4) · **BOOKOFF** (4) · **Cdiscount** (4) · **Flipkart** (4) · **GOG** (4) · **iOSYS** (4) · **Myntra** (4) · **Namshi** (4) · **Shopify** (4) · **Snapdeal** (4) · **Steam** (4) · **Suruga-ya** (4) · **Takealot** (4) · **Trade Me** (4) · **Vinted** (4) · **Wayfair** (4) · **Zalando** (4) · **AliExpress** (3) · **Cars.com** (3) · **Costco** (3) · **Magazine Luiza** (3) · **Mandarake** (3) · **Zara** (3) · **Albert Heijn** (2) · **H&M** (2) · **Jumbo** (2) · **Mercari** (2) · **17TRACK** (1) · **Alibaba** (1) · **Carsales** (1) · **idealo** (1) · **JD.com** (1) ### Reviews & Reputation *22 sources · 119 endpoints* **InHerSight** (9) · **Healthgrades** (8) · **iRecommend** (8) · **Otzovik** (8) · **Vitals** (8) · **Gartner** (7) · **Influenster** (7) · **Flamp** (6) · **GetApp** (6) · **Glassdoor** (6) · **RateMDs** (6) · **Capterra** (5) · **Software Advice** (5) · **TrustRadius** (5) · **BBB** (4) · **Comparably** (4) · **kununu** (4) · **Yelp** (4) · **Sitejabber** (3) · **Tabelog** (3) · **ConsumerAffairs** (2) · **G2** (1) ### Travel & Hospitality *24 sources · 140 endpoints* **SafariBookings** (14) · **FlightAware** (13) · **Flightradar24** (12) · **Hostelworld** (7) · **Omio** (7) · **Skyscanner** (7) · **Trivago** (7) · **Agoda** (6) · **GetYourGuide** (6) · **Hopper** (6) · **Airbnb** (5) · **Booking.com** (5) · **Expedia** (5) · **Jalan** (5) · **Rakuten Travel** (5) · **Trip.com** (5) · **Viator** (5) · **MarineTraffic** (4) · **Momondo** (4) · **VesselFinder** (4) · **OpenSky Network** (3) · **Despegar** (2) · **Rome2Rio** (2) · **MakeMyTrip** (1) ### Food, Dining & Delivery *12 sources · 55 endpoints* **OpenRice** (12) · **Hot Pepper** (7) · **Gurunavi** (6) · **Swiggy** (6) · **Zomato** (6) · **Demae-can** (4) · **Deliveroo** (3) · **Grubhub** (3) · **DoorDash** (2) · **Just Eat** (2) · **OpenTable** (2) · **Uber Eats** (2) ### Local Guides, Events & Tickets *26 sources · 66 endpoints* **Ticketmaster** (8) · **Meetup** (7) · **Eventbrite** (5) · **Afisha Boston** (2) · **Afisha London** (2) · **Afisha Mira** (2) · **Afisha.fi** (2) · **Art Georgia** (2) · **BazarClub** (2) · **Bilety** (2) · **Cyprus Butterfly** (2) · **Cyprus.bz** (2) · **EventCartel** (2) · **Events.ge** (2) · **Expato** (2) · **Kontramarka** (2) · **Kupat Bravo** (2) · **MTicket** (2) · **Nash Vancouver** (2) · **Russian Emirates** (2) · **Showman** (2) · **Torontovka** (2) · **Vecher** (2) · **World Afisha** (2) · **YOLO** (2) · **ZIMA Magazine** (2) ### Real Estate *37 sources · 200 endpoints* **Centaline** (18) · **Realtor.ca** (14) · **OnTheMarket** (11) · **Crexi** (9) · **Midland Realty** (9) · **SUUMO** (9) · **28Hse** (8) · **Yandex Realty** (8) · **Apartment List** (7) · **Immowelt** (7) · **Compass** (6) · **DomClick** (6) · **Hemnet** (5) · **Property Finder** (5) · **Rightmove** (5) · **99acres** (4) · **CoStar** (4) · **Domain** (4) · **Fotocasa** (4) · **Housing.com** (4) · **Immobiliare.it** (4) · **LIFULL** (4) · **Magicbricks** (4) · **Pararius** (4) · **PropertyGuru** (4) · **Redfin** (4) · **Zoopla** (4) · **Funda** (3) · **HotPads** (3) · **Pap** (3) · **QuintoAndar** (3) · **Zap Imóveis** (3) · **Apartments.com** (2) · **AtHome** (2) · **CIAN** (2) · **SeLoger** (2) · **Trulia** (2) ### Jobs & Recruiting *43 sources · 214 endpoints* **Habr Career** (13) · **SuperJob** (12) · **HeadHunter** (11) · **Fiverr** (10) · **Freelancer** (10) · **JobStreet** (9) · **Saramin** (9) · **Bayt** (8) · **PayScale** (7) · **USAJOBS** (7) · **Wantedly** (7) · **Pracuj.pl** (6) · **Welcome to the Jungle** (6) · **CareerBuilder** (5) · **Indeed** (5) · **InfoJobs** (5) · **Levels.fyi** (5) · **Totaljobs** (5) · **Adzuna** (4) · **Built In** (4) · **CTgoodjobs** (4) · **Dice** (4) · **Greenhouse** (4) · **Mynavi** (4) · **Otta** (4) · **Reed** (4) · **Zhaopin** (4) · **ZipRecruiter** (4) · **Rikunabi** (3) · **Salary.com** (3) · **We Work Remotely** (3) · **Workable** (3) · **Ashby** (2) · **Doda** (2) · **Jooble** (2) · **Lever** (2) · **Naukri** (2) · **RemoteOK** (2) · **Seek** (2) · **SimplyHired** (2) · **SmartRecruiters** (2) · **StepStone** (2) · **Workday** (2) ### Contact Enrichment *4 sources · 5 endpoints* **Emails** (2) · **Companies** (1) · **People** (1) · **Phones** (1) ### Research & Academia *17 sources · 89 endpoints* **OpenAlex** (19) · **Crossref** (12) · **OpenAIRE** (8) · **CORE** (6) · **DataCite** (6) · **PubMed** (6) · **Europe PMC** (5) · **ORCID** (5) · **bioRxiv** (4) · **Semantic Scholar** (4) · **PubChem** (3) · **arXiv** (2) · **ClinicalTrials.gov** (2) · **Google Scholar** (2) · **ROR** (2) · **Zenodo** (2) · **Unpaywall** (1) ### Education & Courses *4 sources · 23 endpoints* **Coursera** (7) · **Class Central** (6) · **edX** (5) · **Udemy** (5) ### Industry & Partner Networks *2 sources · 5 endpoints* **Thomasnet** (3) · **Siemens** (2) ### Custom & On-Demand Parsers The catalog isn't a fixed list — it's a pattern: **any website can become a clean, structured endpoint.** Beyond the sources above, Anysite ships purpose-built parsers for specific sites (partner directories, niche job boards, registries, and publishers — e.g. Honeywell, Rockwell Automation, Wasabi channel partners, the GLEIF LEI registry, BuiltWith, ApplyBoard, JustJoinIT). If a source you need isn't here yet, it can be built — and it appears automatically across the API, MCP Server, and CLI. #### Custom Endpoints Request a parser for any site — it shows up automatically in every integration --- ## How to Access These Sources Every source above is available through all four Anysite integrations — same data, your choice of interface: #### REST API Direct HTTP calls with an `access-token` header #### MCP Server Let AI agents discover and call any endpoint #### Anysite CLI Batch processing, pipelines, and database loading #### n8n Nodes No-code workflow automation --- # Error Codes ## HTTP Status Codes All Anysite API endpoints return standard HTTP status codes. Below is the complete list of error codes you may encounter. | Code | Description | Action | |------|-------------|--------| | **400** | Invalid input format (e.g., malformed LinkedIn URN, missing required field) | Check your request body and parameter formats | | **401** | Missing or invalid `access-token` header | Verify your API key at [app.anysite.io](https://app.anysite.io) | | **403** | No access to the requested resource or account | Check your subscription plan and permissions | | **404** | Requested entity not found (account, email, job listing, etc.) | Verify the URL, username, or ID you're querying | | **408** | Request execution timeout exceeded | Increase the `timeout` parameter or simplify your query | | **412** | Entity unavailable at source (deleted, blocked, or URL not responding) | The target profile/page may have been removed or restricted | | **422** | Validation error — request body doesn't match expected schema | Check required fields and parameter types | | **429** | Rate limit exceeded | Wait and retry, or reduce request frequency | | **500** | Internal server error or data source unavailable | Retry after a short delay; contact support if persistent | ## Error Response Format All error responses return a JSON body: ```json { "detail": "Error description message" } ``` For validation errors (422), the response includes field-level details: ```json { "detail": [ { "loc": ["body", "user"], "msg": "field required", "type": "value_error.missing" } ] } ``` ## Common Scenarios ### 400 — Bad Request ```json // Invalid LinkedIn URN format {"detail": "Invalid URN format. Expected: 'urn:li:fsd_profile:ABC123'"} ``` ### 404 — Not Found ```json // User profile doesn't exist {"detail": "LinkedIn user not found"} ``` ### 408 — Timeout Increase the `timeout` parameter in your request body (default: 300 seconds, max: 1500): ```json { "user": "linkedin.com/in/username", "timeout": 600 } ``` ### 412 — Precondition Failed The target entity exists but is not accessible: - LinkedIn profile is private or deactivated - Instagram account is restricted - Web page returns an error ### 429 — Rate Limit Check your current usage with the token management endpoints: ```bash curl -H "access-token: YOUR_API_KEY" https://api.anysite.io/token/statistic ``` --- # Introduction
Anysite
> **AI Agents & LLMs**: start from [/docs/llms.txt](/docs/llms.txt) for an overview or [/docs/llms-full.txt](/docs/llms-full.txt) for the full page index. Every page is also available as raw markdown by appending `.md` to its URL. Machine-readable specs with all parameters and responses live at [api.anysite.io/docs/api/index](https://api.anysite.io/docs/api/index) — the catalog of every endpoint — and `api.anysite.io/docs/api/operations/{slug}` for a single endpoint. Capabilities and installation for agents: [/docs/skill.md](/docs/skill.md). ## What is Anysite? Anysite is a powerful platform that provides comprehensive data extraction and interaction capabilities across multiple social media platforms and search engines — **3,600+ endpoints across 600+ data sources**. Our ecosystem includes: #### REST API Access our complete REST API for social media data extraction, search, and user management #### MCP Server Model Context Protocol server for AI integrations with Claude, Cursor, and other AI tools #### n8n Nodes Community nodes for n8n workflow automation platform #### Anysite CLI Command-line toolkit for data extraction, batch processing, dataset pipelines, and analytics #### Authentication Secure API key management and authentication system ## Supported Platforms Anysite provides data extraction across **600+ data sources**, including: - **LinkedIn** - Professional networking data, profiles, companies, posts, and connections - **Instagram** - User profiles, posts, comments, and media - **Twitter/X** - Tweets, user profiles, and social interactions - **Reddit** - Posts, comments, and community data - **YouTube** - Video search, channels, video details, comments, and subtitles - **ProductHunt** - Products, launches, makers, topics, and collections - **Google** - Web search, news, maps, and related results - **Y Combinator** - Startup and founder intelligence - **SEC** - Company filings and document search - **Web Scraping** - General website parsing and data extraction …plus Amazon, Facebook, TikTok, Yahoo, Crunchbase, Companies House, GitHub, DuckDuckGo, and 20+ more sources. #### Data Sources & Capabilities See what every source can do, in plain language — all 3,600+ endpoints across 600+ sources ## Getting Started #### Get Your API Key Sign up at [anysite.io](https://app.anysite.io/register) and generate your API key #### Choose Your Integration Select from our REST API, MCP Server, or n8n nodes based on your needs #### Start Building Follow our comprehensive guides to integrate Anysite into your applications ## Need Help? #### API Documentation Interactive API documentation with live examples #### GitHub Repositories Open source components and example implementations --- # Acceptable Use Policy # Acceptable Use Policy Last updated: November 4, 2025 Anysite, Inc., a Delaware corporation ("Anysite", "we", "us"), is committed to ensuring that the anysite.io platform and website are used only for legitimate and lawful purposes. By agreeing to our [General Terms and Conditions](/docs/legal/terms-and-conditions), or by using the Website or the Platform (as defined in the General Terms), you also agree to be bound by this Acceptable Use Policy ("AUP"). This AUP outlines activities that are prohibited when using our Website and Platform and describes our enforcement rights. (Modeled on Apify's public AUP.) --- ## 1. General Provisions ### 1.1. Zero tolerance for abuse Anysite takes firm action against illegal or non‑compliant use of the Website or Platform and will cooperate with law enforcement when investigating unlawful activities. Any use of the Website or Platform for illegal, fraudulent, or otherwise unacceptable activities is strictly prohibited. ### 1.2. Lawful, legitimate use only You agree to use the Website and Platform solely for lawful and legitimate purposes and to avoid the Prohibited Activities listed in Section 2 below. ### 1.3. Capitalized terms Any capitalized terms not defined in this AUP have the meanings given in the [General Terms and Conditions](/docs/legal/terms-and-conditions). --- ## 2. Prohibited Activities ### 2.1. The following activities are prohibited, including attempts, facilitation, or encouraging others to engage in them (the "Prohibited Activities"): 1. **Denial‑of‑service (DDoS) attacks** or other actions that cause undue burden on any servers or infrastructure; 2. **Unsolicited mass messaging** (including spam or bulk outreach); 3. **Fraudulent or deceptive behavior**, such as phishing, malware distribution, impersonation, spoofing, ad fraud, click fraud, or similar abuses; 4. **Artificial interaction or manipulation of engagement metrics** (e.g., fake upvotes, shares, ratings, or reviews); 5. **Creating fake accounts or deceptive content** (e.g., disinformation, clickbait, misleading ads, scam emails); 6. **Manipulation of search engines or SEO** through artificial means (e.g., fake clicks in search results); 7. **Surveys or tasks performed in exchange for compensation** where such activity violates applicable law or third‑party terms; 8. **Resale or sublicensing of Platform features** (including APIs, credits, proxies, or resources) without Anysite's prior written approval; 9. **Activities that contravene applicable laws or regulations**, infringe intellectual‑property, privacy, publicity, contractual, or other rights of any third party; 10. **Activities that may harm Anysite's reputation, goodwill, or legitimate interests**; 11. **Any additional activity** that Anysite reasonably deems immoral, unsafe, or otherwise undesirable on its Website or Platform. > **Reminder**: Your use of the Platform must also comply with our [Privacy Policy](/docs/legal/privacy-policy) and, where we process Personal Data on your behalf, the [Data Processing Addendum](/docs/legal/data-processing-addendum). --- ## 3. Our Rights ### 3.1. Enforcement If Anysite identifies Prohibited Activities on the Website or Platform, we may, without notice, block, delete, suspend, or otherwise restrict the relevant user account(s), resources, applications, configurations, or content. We may limit use of the Platform at our sole discretion to prevent direct or indirect harm to Anysite, our infrastructure, or any third party. ### 3.2. No liability for enforcement actions Anysite shall not be liable to you or any third party for exercising our rights under this AUP in good faith. --- ## 4. Reporting ### 4.1. Report abuse To report misuse, security issues, or suspicious activity on the Platform, contact: - **Email**: support@anysite.io We appreciate responsible disclosures. --- ## Related Documents - [General Terms and Conditions](/docs/legal/terms-and-conditions) - [Privacy Policy](/docs/legal/privacy-policy) - [Data Processing Addendum](/docs/legal/data-processing-addendum) --- ## Contact Us For questions about this Acceptable Use Policy, contact us at: - **Email**: support@anysite.io - **Website**: [https://anysite.io](https://app.anysite.io/register) --- # Cookie Policy # Cookie Policy Last Updated: November 4, 2025 Anysite, Inc. ("Anysite", "we", "us", "our") operates the website anysite.io (the "Website") and provides access to the anysite.io data platform and APIs (the "Platform") along with related services (collectively, the "Services"). This Cookie Policy ("Policy") explains how and why we use cookies and similar technologies on the Website and the Platform. Capitalized terms used but not defined here have the meanings in our [General Terms and Conditions](/docs/legal/terms-and-conditions) ("Terms") and [Privacy Policy](/docs/legal/privacy-policy). By using the Website/Platform, you agree to this Policy. Where law requires consent for non‑essential cookies, we will ask for it via our cookie banner or Cookie Settings. If you do not agree, adjust your preferences or disable cookies in your browser; note that essential cookies are required for the Website/Platform to function. (Modeled on the structure of Apify's Cookie Policy.) --- ## Table of Contents - [What are cookies and similar technologies?](#1-what-are-cookies-and-similar-technologies) - [What we collect via cookies](#2-what-we-collect-via-cookies) - [Cookie categories we use](#3-cookie-categories-we-use) - [How long do cookies last?](#4-how-long-do-cookies-last) - [Legal basis and consent (EEA/UK)](#5-legal-basis-and-consent-eeauk) - [Your choices: Cookie Settings and browser controls](#6-your-choices-cookie-settings-and-browser-controls) - [Global Privacy Control (GPC) and "Do Not Track"](#7-global-privacy-control-gpc-and-do-not-track) - [Third‑party cookies](#8-third-party-cookies) - [Example cookie inventory](#9-example-cookie-inventory) - [Managing cookies may impact functionality](#10-managing-cookies-may-impact-functionality) - [Changes to this Policy](#11-changes-to-this-policy) - [Contact Us](#12-contact-us) --- ## 1) What are cookies and similar technologies? Cookies are small text files placed on your device that allow a website to recognize your browser. They perform functions like keeping you signed in, remembering preferences, and measuring site performance. We may also use similar technologies such as pixels, web beacons, SDKs, local storage, and server‑side tracking to achieve comparable purposes. Authoritative guidance generally defines cookies as device‑stored identifiers used for functionality, analytics, or advertising. --- ## 2) What we collect via cookies When you access the Website or Platform, cookies and similar technologies may collect or help us infer information such as device/browser data, IP address, referrer/UTM information, timestamps, pages viewed, session identifiers, and your cookie preferences. Aggregated analytics help us understand trends and improve Services; we do not tie analytics data to your identity unless you have an account and you consent or it is strictly necessary to provide the service (e.g., keeping you signed in). (Adapted from the public Apify Cookie Policy.) --- ## 3) Cookie categories we use We classify cookies into the following categories. Depending on your jurisdiction and choices, some categories may be disabled unless you consent. ### Strictly Necessary Required for core functionality such as authentication, security, network management, and remembering your privacy choices. These cannot be switched off through our banner because the site won't work properly without them. (Comparable definitions appear in the Apify Cookie Policy.) ### Performance/Analytics Help us measure traffic and usage to improve the Website/Platform. Data is typically aggregated. ### Functional Enable enhanced features or personalization (e.g., chat/support widgets, saved preferences). ### Advertising/Targeting May be set by us or partners to build a profile of your interests and show relevant ads on other sites. If disabled, you may see less targeted ads. (Category naming mirrors common practice and the Apify structure.) > We do not use every category in all regions at all times. The exact cookies in use can change as we evolve our Services. For the most up‑to‑date inventory and your current consent state, use Cookie Settings (see Section 6). --- ## 4) How long do cookies last? - **Session cookies** expire when you close your browser. - **Persistent cookies** remain until they expire or you delete them; many analytics/functional cookies last from 1 day to up to 24 months, depending on provider settings. (This session vs. persistent distinction aligns with common practice and the Apify Cookie Policy's approach to lifetimes.) --- ## 5) Legal basis and consent (EEA/UK) Where required by the ePrivacy rules (implemented in the EU and UK), we seek your consent before storing or accessing non‑essential cookies. You can withdraw or change consent at any time via Cookie Settings. Essential cookies may rely on our legitimate interests to provide the service you request. Guidance from regulators emphasizes clear disclosure and active, informed consent for non‑essential cookies. --- ## 6) Your choices: Cookie Settings and browser controls ### Cookie Settings (recommended) Manage granular preferences for each category via the cookie banner when you visit the Website/Platform. Updating your settings will place a cookie to remember your choices. ### Browser settings Most browsers let you block/delete cookies or set site‑specific rules. ### Opt‑out tools (where available) Some third parties provide their own opt‑out pages for analytics/advertising. Please note these tools are offered by third parties; your choices may be browser‑specific. --- ## 7) Global Privacy Control (GPC) and "Do Not Track" Where applicable (e.g., California), we respect a valid Global Privacy Control (GPC) signal as a request to opt out of "sale" or "sharing" of personal information (including for cross‑context behavioral advertising). GPC is recognized by the California Attorney General as an opt‑out mechanism under the CCPA/CPRA framework. If we detect GPC, we will treat it as a global opt‑out for the browser that sends it, and we won't set or will disable any cookies involved in "selling" or "sharing" data under those laws. ("Do Not Track" signals are not consistently honored across the industry, but GPC is supported under California guidance.) --- ## 8) Third‑party cookies Some cookies may be set by third parties (e.g., cloud hosting, analytics, support chat, A/B testing, performance monitoring, advertising networks). These parties may process data for their purposes consistent with their privacy policies. We require service providers acting on our behalf to commit to confidentiality and appropriate safeguards. For vendors acting as our sub‑processors, see Sub‑processors and our [Data Processing Addendum](/docs/legal/data-processing-addendum). --- ## 9) Example cookie inventory > **Important**: The list below is a placeholder to illustrate the format. You can manage your cookie preferences via the cookie banner on our Website/Platform. | Name | Provider | Category | Purpose | Expiry | |------|----------|----------|---------|--------| | `__Host-ans_session` | anysite.io | Strictly Necessary | Maintains a secure logged‑in session across anysite.io subdomains | Session | | `cookie_consent` | anysite.io | Strictly Necessary | Stores your cookie choices so we can honor them | 12 months | | `app_csrf` | anysite.io | Strictly Necessary | CSRF protection for form submissions | Session | | `chat_session` | [Support tool] | Functional | Enables in‑product support chat | 6 months | | `_ga` / `_gid` | [Analytics tool] | Performance/Analytics | Site usage and performance measurement | 1 day / 24 months | | `_gcl_au` | [Analytics/Attribution] | Performance/Analytics | Campaign attribution and conversions | 3 months | | `ab_test_*` | anysite.io | Performance/Analytics | A/B testing for UX improvements | 1 month | | `ad_id` | [Ad partner] | Advertising/Targeting | Shows more relevant ads off‑site (if used) | 3 months | --- ## 10) Managing cookies may impact functionality Blocking or deleting cookies—particularly strictly necessary ones—may cause parts of the Website/Platform to stop working (e.g., login, session continuity, preference storage). --- ## 11) Changes to this Policy We may update this Policy to reflect changes in technologies, laws, or our Services. We will post updates here and, where required, request your consent again for material changes affecting non‑essential cookies. The "Last Updated" date shows the effective date. --- ## 12) Contact Us For questions about this Cookie Policy or to exercise your cookie preferences, contact us at: - **Email**: privacy@anysite.io - **Website**: [https://anysite.io](https://app.anysite.io/register) --- ## Related Documents - [Privacy Policy](/docs/legal/privacy-policy) - How we handle your personal information - [Terms and Conditions](/docs/legal/terms-and-conditions) - Main service agreement - [Data Processing Addendum](/docs/legal/data-processing-addendum) - GDPR and data protection terms - [Acceptable Use Policy](/docs/legal/acceptable-use-policy) - Rules for using our services --- # Data Processing Addendum # Data Processing Addendum (DPA) Last updated: November 4, 2025 This Data Processing Addendum ("DPA") forms part of and is incorporated into the anysite.io [General Terms and Conditions](/docs/legal/terms-and-conditions) and/or any separately executed Master Service Agreement between Anysite, Inc., a Delaware corporation, with its principal place of business at Delaware, USA ("Anysite", "we", "us" or "Processor/Service Provider") and the customer identified in the applicable agreement ("Customer" or "Controller/Business") (each a "Party" and collectively, the "Parties"). This DPA governs Anysite's Processing of Personal Data on behalf of Customer in connection with the anysite.io platform and related services (the "Services"). If there is any conflict between this DPA and the Agreement, this DPA will control with respect to its subject matter. Capitalized terms not defined here have the meanings in the Agreement or under applicable Data Protection Law. --- ## 1) Definitions ### 1.1. Data Protection Law Data Protection Law means all laws and regulations relating to data privacy, data protection, data security, breach notification, or the Processing of Personal Data that apply to a Party's performance under this DPA, including as applicable: the EU General Data Protection Regulation (Regulation (EU) 2016/679, "GDPR"), the UK Data Protection Act 2018 and UK GDPR, and the California Consumer Privacy Act as amended by the California Privacy Rights Act (together, "CCPA/CPRA"). ### 1.2. EU SCCs EU SCCs means the European Commission's Standard Contractual Clauses for the transfer of personal data to third countries adopted by Commission Implementing Decision (EU) 2021/914 of 4 June 2021, as amended or replaced. ### 1.3. UK Addendum UK Addendum means the International Data Transfer Addendum to the EU Commission Standard Contractual Clauses issued by the UK ICO (version B1.0 in force 21 March 2022), as amended or replaced. ### 1.4. Personal Data Terms Personal Data, Controller, Processor, Business, Service Provider, Sell, Share, Data Subject, Process/Processing, and related terms have the meanings given to them by the applicable Data Protection Law. For CPRA, "sharing" includes transfers for cross‑context behavioral advertising even when no money changes hands. --- ## 2) Roles; Scope; Customer Instructions ### 2.1. Roles For Processing under this DPA, Customer acts as Controller/Business and Anysite acts as Processor/Service Provider. ### 2.2. Documented Instructions Anysite will Process Personal Data solely: - (a) to provide the Services and perform the Agreement; - (b) in accordance with Customer's documented, lawful instructions; and - (c) as required by applicable law (in which case, Anysite will inform Customer unless such notice is prohibited). ### 2.3. Customer Responsibilities Customer is responsible for the lawfulness of the Personal Data and instructions it provides, including providing any necessary notices and obtaining valid legal bases (e.g., consent, legitimate interests) and honoring Data Subject rights. ### 2.4. No Restricted Data (by default) Unless the Parties expressly agree in writing and implement appropriate safeguards, Customer will not provide Anysite with Special Categories of data (GDPR Art. 9), data on criminal convictions/offences (Art. 10), PHI under HIPAA, PCI‑DSS data, children's data subject to parental consent regimes, FERPA data, or other sector‑specific regulated data. ### 2.5. Anysite as Independent Controller (limited) Separately from Processing as a Processor, Anysite may Process certain Personal Data as its own Controller (e.g., account provisioning and management, billing, abuse detection, compliance with legal obligations, and creation of aggregated, de‑identified analytics to plan capacity and improve Services). Such Processing is described in the [Anysite Privacy Policy](/docs/legal/privacy-policy) and falls outside this DPA. This mirrors common platform practice and the approach outlined in Apify's DPA for controller‑level operations. --- ## 3) Confidentiality Anysite will ensure that personnel authorized to Process Personal Data are subject to binding duties of confidentiality and access Personal Data only as necessary to perform the Services. --- ## 4) Security Measures ### 4.1. Protection Anysite implements and maintains appropriate technical and organizational measures designed to protect Personal Data against accidental or unlawful destruction, loss, alteration, unauthorized disclosure, or access, taking into account the state of the art, costs, and the nature, scope, context and purposes of Processing (see Schedule D – Security Measures). ### 4.2. Reviews & Updates Anysite will regularly review and update its security measures to maintain an appropriate level of protection. --- ## 5) Security Incidents ### 5.1. Notice Upon becoming aware of a confirmed Security Incident affecting Personal Data Processed by Anysite on Customer's behalf, Anysite will notify Customer without undue delay and no later than 72 hours after confirmation, and will provide information reasonably available to assist Customer with its own notification obligations. (72‑hour timing aligns with common practice; Apify's DPA uses the same window.) ### 5.2. Mitigation Anysite will take reasonable steps to contain, investigate, and remediate the Security Incident. ### 5.3. No Admission Incident notifications are not an admission of fault or liability. --- ## 6) International Data Transfers ### 7.1. General Customer authorizes Anysite to transfer, store, and Process Personal Data in the United States and other jurisdictions in which Anysite operates, subject to transfer safeguards in this Section. ### 7.2. EU/EEA → non‑EEA transfers Where Customer's Personal Data is subject to the GDPR and is transferred to Anysite in a country without an adequacy decision, the EU SCCs are incorporated by reference and completed as set out in Schedule A (typically Module Two: Controller → Processor; Module Three may apply where Customer is a Processor). In case of conflict between this DPA and the EU SCCs, the EU SCCs prevail. ### 7.3. UK transfers For Personal Data subject to UK GDPR, the UK Addendum is incorporated and completed as set out in Schedule A. ### 7.4. Supplementary measures; TIA Where required, the Parties will cooperate in good faith to implement supplementary measures and complete transfer impact assessments. --- ## 7) Audits & Assistance ### 8.1. Documentation Upon written request (no more than once in any 12‑month period), Anysite will make available information reasonably necessary to demonstrate compliance with this DPA (e.g., summaries of security controls, third‑party compliance reports, or certifications if available). ### 8.2. Audits If such information does not reasonably demonstrate compliance, Customer may conduct (or have conducted by a mutually agreed independent auditor) an on‑site or remote audit of Anysite's relevant systems and facilities under reasonable confidentiality, time, scope, and cost‑reimbursement parameters, and during normal business hours, no more than once every 12 months. ### 8.3. Regulatory Cooperation Anysite will reasonably cooperate with competent supervisory authorities in relation to Processing performed under this DPA. --- ## 8) Return & Deletion At termination or upon written request, Anysite will delete or return Personal Data (at Customer's choice), unless retention is required by law (in which case Anysite will continue to protect the data per this DPA and delete as soon as legally permissible). --- ## 9) Data Subject Requests Taking into account the nature of the Processing, Anysite will provide reasonable assistance to Customer, by appropriate technical and organizational measures, to enable Customer to respond to Data Subject requests (access, deletion, portability, objection, restriction, etc.). Where a request is made directly to Anysite, Anysite will redirect it to Customer without responding (unless legally required). (This mirrors the approach outlined in Apify's DPA.) --- ## 10) DPIAs & Prior Consultations Anysite will provide reasonable assistance to Customer in carrying out data protection impact assessments and consultations with supervisory authorities where required by Data Protection Law, considering the nature of Processing and information available to Anysite. (Comparable to Apify's DPIA section.) --- ## 11) Anysite Policies & AUP Customer's use of the Services must comply with the Anysite [Acceptable Use Policy](/docs/legal/acceptable-use-policy) and [Privacy Policy](/docs/legal/privacy-policy), each incorporated by reference. --- ## 12) CCPA/CPRA – Service Provider Terms (Schedule B incorporated) To the extent Anysite Processes Personal Information subject to CCPA/CPRA on behalf of Customer, Anysite will act as Service Provider and will not: - (a) sell such Personal Information; - (b) share such Personal Information for cross‑context behavioral advertising; - (c) retain, use, or disclose such Personal Information for any purpose other than providing the Services or as otherwise permitted by CCPA/CPRA; or - (d) combine such Personal Information with other data except as permitted by CCPA/CPRA (e.g., for certain business purposes). --- ## 13) Liability; Order of Precedence ### 14.1. Liability Each Party's liability arising under or in connection with this DPA is subject to the limitations and exclusions set out in the Agreement. ### 14.2. Precedence In case of conflict: EU SCCs/UK Addendum (Schedule A) prevail over this DPA; this DPA prevails over the Agreement. --- ## 14) Term; Changes; Governing Law ### 15.1. Term This DPA is effective as of the Effective Date of the Agreement (or the date accepted by Customer, if later) and remains in force while Anysite Processes Personal Data for Customer. ### 15.2. Changes Anysite may update this DPA to reflect legal or operational changes, with notice to Customer in accordance with the Agreement and applicable law. ### 15.3. Governing Law; Venue This DPA (excluding the EU SCCs/UK Addendum, which specify their own governing law/forum) is governed by the laws of the State of Delaware, with exclusive venue as set out in the Agreement. ### 15.4. Contact DPO/Privacy contact: privacy@anysite.io (or as updated on our Website). --- ## Schedule A – Cross‑Border Transfer Mechanisms ### A. EU SCCs (Controller → Processor; Processor → Processor as applicable) The EU SCCs (2021/914) are incorporated by reference and deemed executed between the Parties as follows: - Module Two (C→P) applies where Customer is Controller and Anysite is Processor. - **Clause 7** (Docking Clause): not applied. - **Clause 17** (Governing law): Ireland. - **Clause 18** (Forum): Irish courts. - **Annex I(A)–(C) and Annex II** are completed by Schedules C–D of this DPA. ### B. UK Addendum For Personal Data subject to UK GDPR, the UK Addendum (version B1.0 in force 21 March 2022) is incorporated and completed as follows: - Tables 1–3 pull the corresponding information from the EU SCCs/Annexes as above; - In Table 4, the "neither party" option is selected unless the Parties agree otherwise. - The Addendum start date is the DPA effective date. > If the Parties later adopt alternative or additional transfer tools (e.g., adequacy decisions or certification schemes), they may supersede or supplement the above by written agreement. --- ## Schedule B – CCPA/CPRA Additional Terms 1. **Service Provider.** Anysite acts as a Service Provider (Cal. Civ. Code §1798.140) in Processing Personal Information on Customer's behalf. 2. **No Sale/Share.** Anysite will not sell or share Personal Information, including no cross‑context behavioral advertising use, and will not retain, use, or disclose it outside the business purpose of providing the Services, except as permitted by CCPA/CPRA. 3. **Assistance.** Anysite will provide reasonable assistance to enable Customer to honor consumer rights requests, opt‑out signals, and to implement deletion/retention obligations. 4. **Subcontractors.** Anysite will impose Service‑Provider‑level restrictions on any subcontractors and remains responsible for their compliance. 5. **Certifications.** Upon Customer's written request, Anysite will certify compliance with this Schedule B. --- ## Schedule C – Details of Processing (Annex I & Annex I(B) to SCCs) ### 1. Parties **Data Exporter:** Customer (name and contact details as set forth in the Agreement or account profile). Role: Controller (or Processor, where applicable). **Data Importer:** Anysite, Inc. (Delaware, USA); contact: privacy@anysite.io. Role: Processor. ### 2. Subject Matter; Nature; Purpose; Duration - **Subject Matter:** Processing of Personal Data submitted to or collected through the Services (e.g., datasets obtained via Customer‑configured API/data extraction workflows). - **Nature of Processing:** collection, retrieval, ingestion, storage, structuring, transmission, analysis, output generation, deletion. - **Purpose:** provision, maintenance, and improvement of the Services as instructed by Customer; support; security; incident prevention/detection; account management; billing; usage analytics (aggregated/de‑identified). - **Duration:** for the term of the Agreement and any lawful retention period. ### 3. Data Subjects & Categories of Personal Data (at Customer's discretion and configuration) - **Data Subjects:** may include Customer's end users, website visitors, prospects, employees/contractors (business contacts), vendors, and other individuals whose data Customer lawfully provides. - **Personal Data Categories:** identifiers and contact data (e.g., name, email, IP, device/online identifiers), professional information, transactional and usage metadata, and other data fields that Customer elects to Process through the Services. - **Sensitive Data:** not anticipated by default. If Customer instructs Anysite to Process special categories or other sensitive data, the Parties will document additional safeguards in writing before Processing. ### 4. Frequency of Transfers Continuous or as determined by Customer's use. --- ## Schedule D – Security Measures (Annex II to SCCs) Anysite maintains the following technical and organizational measures (non‑exhaustive and subject to reasonable updates): 1. **Governance & Access Control:** role‑based access; unique credentials; MFA for privileged access; least‑privilege and need‑to‑know; periodic access reviews; timely revocation. 2. **Data Security:** encryption in transit (TLS) and at rest (industry‑standard); key management with restricted access; data segregation/tenant isolation; hardened storage. 3. **Network & Infrastructure:** firewalls and network segmentation; baseline hardening; system patching cadence; vulnerability scanning and risk‑based remediation; DDoS protections. 4. **Monitoring & Logging:** centralized logging; security event monitoring and alerting; audit trails for administrative actions; time synchronization. 5. **Application Security:** secure SDLC; code reviews; dependency management; secrets management; regular security testing (including third‑party testing where appropriate). 6. **Business Continuity & DR:** documented backup and recovery procedures; redundancy for critical components; recovery objectives aligned to service tier. 7. **Incident Response:** documented plan; defined roles; triage/containment/eradication steps; post‑incident reviews; customer communications workflow (see Section 5). 8. **Personnel Security & Training:** background checks where lawful; confidentiality undertakings; periodic security and privacy training. 9. **Vendor Management:** security due diligence; contractual flow‑down of obligations; ongoing monitoring aligned with risk. 10. **Physical Security:** data center controls provided by reputable hosting providers; visitor management; access logs. 11. **Privacy by Design/Default:** minimization; purpose limitation; configurable retention; de‑identification/aggregation where feasible. 12. **Change Management:** documented change control; emergency change procedures; rollback plans. > These security controls are comparable to the security control families commonly referenced in DPAs; Apify's DPA describes similar categories of measures. --- ## Notes on Sources & Alignment - This DPA aligns with the EU SCCs (2021/914) and UK Addendum B1.0 (in force 21 Mar 2022) for cross‑border transfers. - CPRA's definition of "sharing" (cross‑context behavioral advertising) is reflected in Schedule B. - The structure and certain concepts mirror the public Apify DPA (e.g., controller‑level purposes, breach notice timing). --- ## Contact Us For questions about this Data Processing Addendum, contact us at: - **Email**: privacy@anysite.io - **Legal**: legal@anysite.io - **Website**: [https://anysite.io](https://app.anysite.io/register) --- ## Related Documents - [General Terms and Conditions](/docs/legal/terms-and-conditions) - Main service agreement - [Privacy Policy](/docs/legal/privacy-policy) - How we handle your personal information - [Acceptable Use Policy](/docs/legal/acceptable-use-policy) - Rules for using our services --- # Privacy Policy # Anysite Privacy Policy Last Updated: November 4, 2025 Anysite, Inc., a Delaware corporation ("Anysite", "we", "our", or "us"), operates the website anysite.io (the "Website"), provides customers access to the anysite.io data platform and APIs (the "Platform"), and offers related services and features (collectively, the "Services"). This Privacy Policy explains how we collect, use, disclose, and protect Personal Data. "Personal Data" means any information that identifies or can be linked to an identified or identifiable individual. Capitalized terms not defined here have the meaning given in our [General Terms and Conditions](/docs/legal/terms-and-conditions). --- ## When this Privacy Policy applies This Privacy Policy applies where Anysite acts as a data controller of your Personal Data — for example, when we collect information from Website visitors, trial users and customers, community members, and job candidates ("you"). ## When this Privacy Policy does not apply If you use our Platform/Services to collect or process Personal Data (e.g., by running your own workflows, connectors, or API calls), Anysite generally acts as a data processor / service provider on your behalf, and this Privacy Policy does not apply to that processing. Such processing is governed by our [Data Processing Addendum](/docs/legal/data-processing-addendum) ("DPA"). You are responsible for having a lawful basis and providing all required notices for the data you instruct us to process. --- ## Table of Contents - [Personal Data We Collect](#personal-data-we-collect) - [How We Use Your Personal Data](#how-we-use-your-personal-data) - [How We Disclose Your Personal Data](#how-we-disclose-your-personal-data) - [How We Retain and Dispose Your Personal Data](#how-we-retain-and-dispose-your-personal-data) - [Your Rights and Your Choices](#your-rights-and-your-choices) - [Third‑Party Links and Features](#third-party-links-and-features) - [International Transfers](#international-transfers) - [How We Protect Your Personal Data](#how-we-protect-your-personal-data) - [Children's Privacy](#childrens-privacy) - [Aggregate/De‑identified Data](#aggregate--de-identified-data) - [Territory‑Specific Terms](#territory-specific-terms) - [Changes to this Privacy Policy](#changes-to-this-privacy-policy) - [Contact Us](#contact-us) --- ## Personal Data We Collect ### A) Personal Data you provide to us We collect Personal Data that you provide directly, for example when you: - create an account and use the Platform/Services (including contacting support or sales); - sign up for a demo, webinar, or event; - participate in community spaces (e.g., forums); - apply for a job. This may include your name, email address, username, password, organization and role, billing and payment details (processed via secure third‑party providers), and any profile information you voluntarily add (e.g., short bio, website URL, GitHub or social handles, profile photo) that can appear on your public profile. ### B) Personal Data we collect automatically Like most online services, we automatically collect certain technical data when you visit the Website or use the Platform, such as device and browser type, operating system, IP address, language settings, timestamps, usage logs (including API requests), and diagnostic information (e.g., connection logs and transfer statistics). We also use cookies and similar technologies; details are in our [Cookie Policy](/docs/legal/cookie-policy). --- ## How We Use Your Personal Data We use Personal Data to: - Provide and operate the Platform/Services (including authentication, account administration, and customer support); - Process payments via compliant third‑party payment processors; - Enable public profiles/community features you choose to use; - Communicate with you about product updates, service notices, and marketing (you can opt out of marketing at any time); - Improve and secure the Platform/Services, including analytics, troubleshooting, fraud/abuse prevention, and service development; - Recruit and evaluate job candidates (with your consent where required). Where required by law, we rely on one or more lawful bases for processing (e.g., contract performance, legitimate interests, legal obligations, or your consent). See EEA/UK terms below. --- ## How We Disclose Your Personal Data We may disclose Personal Data to: - Service providers / processors that help us operate the Website/Platform/Services (e.g., hosting, storage, security, analytics, support, billing, applicant tracking); - Partners in connection with joint offerings you request or expressly show interest in; - Public forums you choose to use (e.g., community posts may be publicly accessible); - Law enforcement or regulators where required or permitted by law; - Affiliates, successors, or acquirers in connection with corporate transactions; - Others with your consent or direction. We remain responsible for our service providers' handling of your Personal Data where they act on our behalf. --- ## How We Retain and Dispose Your Personal Data We retain Personal Data only as long as necessary for the purposes described in this Policy or as required by law. Upon account closure or when data is no longer needed, we delete or de‑identify it per our retention procedures, unless we must retain it to comply with legal obligations or to establish, exercise, or defend legal claims. --- ## Your Rights and Your Choices ### Access, correction, deletion Upon request (and after verifying your identity), you may access the Personal Data we hold about you, and request correction or deletion where applicable. You can also update certain information directly in your account settings. We will respond within the timeframes required by applicable law. ### Marketing communications You can opt out of marketing emails by using the unsubscribe link in those emails. We may still send you transactional or service‑related messages. ### Cookies and similar technologies Manage your cookie preferences through our [Cookie Policy](/docs/legal/cookie-policy) and/or your browser settings. If you submit a request that we cannot fulfill (for example, where doing so would infringe others' rights or conflict with legal obligations), we will inform you. --- ## Third‑Party Links and Features Our Website/Platform may include links or integrations (e.g., "Like/Share" buttons) operated by third parties that may collect your IP address or set cookies. Their processing is governed by their own privacy policies; we are not responsible for third‑party sites or features. --- ## International Transfers We and some of our service providers operate globally, including in the United States and the European Union/United Kingdom. When Personal Data is transferred to countries without an adequacy decision, we implement appropriate safeguards such as the EU Standard Contractual Clauses (SCCs) and, for the UK, the UK International Data Transfer Addendum (IDTA), or other valid transfer mechanisms. --- ## How We Protect Your Personal Data We use administrative, technical, and physical safeguards designed to protect Personal Data against unauthorized access, disclosure, alteration, and destruction. Measures include access controls (least privilege, MFA for privileged roles), encryption in transit and at rest (where applicable), logging/monitoring, secure development practices, and vendor security reviews. For an overview, see our Security/Trust page (to be published). --- ## Children's Privacy Our Website, Platform, and Services are not directed to children, and we do not knowingly collect Personal Data from anyone under 18 without verifiable parental consent. If we learn that a child under 18 has provided Personal Data without proper consent, we will remove such data. --- ## Aggregate / De‑identified Data We may create and use aggregated or de‑identified information (which does not identify an individual) to analyze usage, improve Services, and for other legitimate business purposes. We may share such information with third parties. --- ## Territory‑Specific Terms ### EEA & UK For individuals in the EEA/UK, our legal bases for processing include: - Contract (Art. 6(1)(b) GDPR) — to provide the Services; - Legitimate interests (Art. 6(1)(f)) — e.g., securing and improving Services; - Legal obligations (Art. 6(1)(c)); - Consent (Art. 6(1)(a)) where required. Your rights (subject to conditions and exceptions in law) include: access, portability, rectification, objection, restriction, erasure, complaint to a supervisory authority, and withdrawal of consent. You can exercise these rights via the contact details below. Cross‑border transfers rely on SCCs/IDTA where applicable. ### United States – California and other state laws If you are a California resident (and, as applicable, residents of states with similar laws), you may have rights to: know/access, correct, delete, data portability, opt out of sale or sharing (including cross‑context behavioral advertising), and to limit the use/disclosure of sensitive personal information, as well as the right not to be discriminated against for exercising your rights. We will process global opt‑out preference signals where required by law (e.g., GPC in California). To exercise, use the contact details below or available in‑product controls. --- ## Changes to this Privacy Policy We may update this Policy from time to time. We will post changes on this page and update the "Last Updated" date. Your continued use of the Website/Platform after changes become effective means you accept the updated Policy. --- ## Contact Us For questions about this Privacy Policy or to exercise your rights, contact us at: - **Email**: privacy@anysite.io - **Website**: [https://anysite.io](https://app.anysite.io/register) ## Related Documents - [Cookie Policy](/docs/legal/cookie-policy) - [General Terms and Conditions](/docs/legal/terms-and-conditions) - [Acceptable Use Policy](/docs/legal/acceptable-use-policy) - [Data Processing Addendum](/docs/legal/data-processing-addendum) --- # Terms and Conditions # General Terms and Conditions Last Updated: November 4, 2025 Anysite, Inc., a Delaware corporation with its registered office in Wilmington, Delaware, United States ("we", "us" or the "Provider") welcomes you ("you" or the "User") on our website anysite.io (the "Website"). These terms and conditions of use (the "Terms") shall govern your access to the Website, its use, and use of the Platform and the Services (as defined below). --- ## Summary The Terms are the key document governing the relationship between you and us, please read the whole text of the Terms. For your convenience, we have presented these terms in a short non-binding summary followed by the full legal terms. --- ## Table of Contents 1. Definitions 2. Account Registration and Access 3. Platform and Services Description 4. Acceptable Use 5. Billing and Payment 6. Intellectual Property Rights 7. Data Protection and Privacy 8. Service Level and Availability 9. Limitation of Liability 10. Indemnification 11. Term and Termination 12. Modifications to Terms and Services 13. Dispute Resolution 14. General Provisions --- ## 1. Definitions For the purposes of these Terms: - **"Platform"** means the anysite.io data extraction platform and APIs, including all features, tools, and technical infrastructure. - **"Services"** means the Platform together with any related services, support, documentation, and features provided by Anysite. - **"Account"** means your registered user account on the Platform. - **"Content"** means any data, information, text, software, code, or other materials. - **"Customer Data"** means any Content that you submit, upload, transmit, or process using the Services. - **"Subscription"** means your paid or trial access plan to the Services. --- ## 2. Account Registration and Access ### 2.1. Account Creation To use the Platform, you must create an Account by providing accurate, current, and complete information. You represent that: - You are at least 18 years old or the age of majority in your jurisdiction; - You have the legal capacity to enter into binding contracts; - All information you provide is truthful and accurate. ### 2.2. Account Security You are responsible for: - Maintaining the confidentiality of your Account credentials; - All activities that occur under your Account; - Notifying us immediately of any unauthorized access or security breach. ### 2.3. Account Usage Each Account is for a single user or organization. You may not: - Share Account credentials with others; - Create multiple Accounts to circumvent usage limits; - Use another user's Account without permission. --- ## 3. Platform and Services Description ### 3.1. Service Offering Anysite provides a data extraction and API platform that allows you to: - Extract data from various online sources (LinkedIn, Twitter, Instagram, Reddit, Google, and others); - Access structured data through RESTful APIs; - Integrate data extraction capabilities into your applications; - Manage and monitor API usage through a dashboard. ### 3.2. Service Modifications We reserve the right to: - Modify, update, or discontinue any feature or functionality; - Add new features or Services; - Change API endpoints or data structures with reasonable notice. We will make reasonable efforts to notify you of material changes that may affect your use of the Services. ### 3.3. Service Limitations The Services are subject to: - Rate limits and usage quotas based on your Subscription plan; - Technical limitations of third-party data sources; - Changes in data availability from external platforms; - Maintenance windows and scheduled downtime. --- ## 4. Acceptable Use ### 4.1. Compliance Your use of the Services must comply with: - These Terms; - Our [Acceptable Use Policy](/docs/legal/acceptable-use-policy); - Our [Privacy Policy](/docs/legal/privacy-policy); - All applicable laws and regulations; - Terms of service of third-party platforms from which you extract data. ### 4.2. Prohibited Activities You must not use the Services to: - Violate any laws or regulations; - Infringe on intellectual property or privacy rights; - Distribute malware, spam, or harmful content; - Attempt to bypass security measures or access controls; - Resell or sublicense the Services without written permission; - Conduct unauthorized testing, scanning, or monitoring of systems. ### 4.3. Data Usage Responsibility You are solely responsible for: - Ensuring you have lawful rights to extract and process data; - Obtaining necessary consents and authorizations; - Complying with data protection laws (GDPR, CCPA, etc.); - Respecting robots.txt files and website terms of service. --- ## 5. Billing and Payment ### 5.1. Subscription Plans Services are available under various subscription plans with different: - API request limits; - Data extraction quotas; - Feature access levels; - Support tiers. ### 5.2. Payment Terms - Subscriptions are billed in advance on a monthly or annual basis; - All fees are in United States Dollars (USD) unless otherwise stated; - Payments are processed through secure third-party payment processors; - You authorize us to charge your payment method on each billing cycle. ### 5.3. Price Changes We may change subscription prices with at least 30 days' notice. Price changes will apply: - To new subscriptions immediately; - To existing subscriptions at the next renewal date. ### 5.4. Refunds - We offer a 7-day money-back guarantee for new subscriptions; - Refunds are prorated for annual subscriptions within the first 30 days; - Usage-based overages are non-refundable; - Refunds are processed within 10 business days. ### 5.5. Overages and Usage Limits If you exceed your plan's limits: - We may throttle or temporarily suspend service; - Additional usage may be billed at standard overage rates; - You will be notified before overage charges are applied. ### 5.6. Taxes Fees exclude all taxes, levies, or duties. You are responsible for all applicable taxes except those based on our net income. --- ## 6. Intellectual Property Rights ### 6.1. Our Intellectual Property Anysite retains all rights, title, and interest in: - The Platform and Services; - Our trademarks, logos, and branding; - Documentation and technical materials; - Algorithms, software, and technology. ### 6.2. Your Customer Data You retain all rights to your Customer Data. By using the Services, you grant us a limited license to: - Store, process, and transmit Customer Data; - Perform the Services you request; - Create aggregated, de-identified analytics. ### 6.3. Restrictions You may not: - Reverse engineer, decompile, or disassemble the Platform; - Remove or modify any proprietary notices; - Use our trademarks without written permission; - Create derivative works based on the Services. ### 6.4. Feedback If you provide feedback or suggestions, we may use them without obligation to you. --- ## 7. Data Protection and Privacy ### 7.1. Privacy Policy Our [Privacy Policy](/docs/legal/privacy-policy) governs how we collect and process your personal information. ### 7.2. Data Processing Addendum If you process personal data using the Services, the [Data Processing Addendum](/docs/legal/data-processing-addendum) (DPA) applies and is incorporated into these Terms. ### 7.3. Data Security We implement reasonable security measures to protect data, but cannot guarantee absolute security. You must: - Use secure connections (HTTPS) when accessing the Platform; - Protect your API keys and credentials; - Report security vulnerabilities responsibly. ### 7.4. Data Retention - Customer Data is retained while your Account is active; - Upon termination, we may retain data for up to 30 days for recovery; - After 30 days, data is permanently deleted unless legally required to retain it; - You may request earlier deletion of your data. --- ## 8. Service Level and Availability ### 8.1. Uptime Commitment We target 99.5% uptime for the Platform (excluding scheduled maintenance). ### 8.2. Maintenance - Scheduled maintenance will be announced at least 48 hours in advance; - Emergency maintenance may occur with shorter notice; - We will minimize disruption during maintenance windows. ### 8.3. No Service Level Agreement (SLA) Unless separately agreed in writing, we provide no formal SLA or uptime guarantees. Service availability targets are goals, not guarantees. ### 8.4. Support Support is provided via: - Email support (support@anysite.io); - Documentation and guides; - Community forums (if available). Response times vary by subscription plan. --- ## 9. Limitation of Liability ### 9.1. Service "As Is" THE SERVICES ARE PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. ### 9.2. Limitation of Damages TO THE MAXIMUM EXTENT PERMITTED BY LAW: - WE SHALL NOT BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES; - OUR TOTAL LIABILITY SHALL NOT EXCEED THE AMOUNT YOU PAID TO US IN THE 12 MONTHS PRECEDING THE CLAIM; - THIS LIMITATION APPLIES REGARDLESS OF THE LEGAL THEORY (CONTRACT, TORT, NEGLIGENCE, ETC.). ### 9.3. Exceptions Some jurisdictions do not allow limitation of certain warranties or damages. In such cases, limitations apply to the maximum extent permitted by law. ### 9.4. Third-Party Services We are not responsible for: - Availability or accuracy of third-party data sources; - Changes to third-party platform APIs or terms; - Actions or omissions of third-party service providers. --- ## 10. Indemnification You agree to indemnify, defend, and hold harmless Anysite and its officers, directors, employees, and agents from any claims, damages, losses, liabilities, and expenses (including legal fees) arising from: - Your use of the Services; - Your violation of these Terms; - Your violation of any laws or third-party rights; - Your Customer Data or data extraction activities. --- ## 11. Term and Termination ### 11.1. Term These Terms begin when you create an Account and continue until terminated. ### 11.2. Termination by You You may terminate your Account at any time by: - Canceling your subscription through the dashboard; - Contacting support@anysite.io. ### 11.3. Termination by Us We may suspend or terminate your Account immediately if: - You violate these Terms or the Acceptable Use Policy; - Your payment fails or Account becomes delinquent; - We are required to do so by law; - Continued service poses security or legal risks. ### 11.4. Effect of Termination Upon termination: - Your access to the Services will cease; - Outstanding fees become immediately due; - We will delete your Customer Data per Section 7.4; - Sections that by nature should survive will survive. ### 11.5. Survival The following sections survive termination: Intellectual Property Rights, Limitation of Liability, Indemnification, Dispute Resolution, and General Provisions. --- ## 12. Modifications to Terms and Services ### 12.1. Changes to Terms We may modify these Terms at any time. We will: - Post updated Terms on the Website; - Update the "Last Updated" date; - Notify you via email for material changes. Your continued use after changes become effective constitutes acceptance. ### 12.2. Objection to Changes If you object to changes, you may terminate your Account within 30 days of the change announcement for a prorated refund. --- ## 13. Dispute Resolution ### 13.1. Governing Law These Terms are governed by the laws of the State of Delaware, United States, without regard to conflict of law principles. ### 13.2. Informal Resolution Before filing any formal dispute, you agree to contact us at legal@anysite.io to attempt informal resolution. ### 13.3. Arbitration Any disputes not resolved informally will be resolved through binding arbitration in accordance with the American Arbitration Association rules, conducted in Delaware. ### 13.4. Class Action Waiver You agree to resolve disputes on an individual basis only. You waive any right to participate in class action lawsuits or class-wide arbitration. ### 13.5. Exceptions Either party may seek injunctive relief in court for: - Intellectual property infringement; - Violation of confidentiality obligations; - Enforcement of arbitration awards. --- ## 14. General Provisions ### 14.1. Entire Agreement These Terms, together with the Privacy Policy, DPA, and Acceptable Use Policy, constitute the entire agreement between you and Anysite. ### 14.2. Assignment You may not assign these Terms without our written consent. We may assign these Terms in connection with a merger, acquisition, or sale of assets. ### 14.3. Severability If any provision is found invalid or unenforceable, the remaining provisions will remain in full effect. ### 14.4. Waiver Failure to enforce any provision does not constitute a waiver of that provision. ### 14.5. Force Majeure We are not liable for delays or failures due to causes beyond our reasonable control (natural disasters, war, strikes, internet outages, etc.). ### 14.6. Notices Notices to you will be sent to your Account email. Notices to us should be sent to legal@anysite.io. ### 14.7. Independent Contractors The parties are independent contractors. These Terms do not create a partnership, joint venture, or agency relationship. ### 14.8. Export Compliance You agree to comply with all export and import laws and regulations. --- ## Contact Us For questions about these Terms and Conditions, contact us at: - **Email**: legal@anysite.io - **Support**: support@anysite.io - **Website**: [https://anysite.io](https://app.anysite.io/register) --- ## Related Documents - [Privacy Policy](/docs/legal/privacy-policy) - How we handle your personal information - [Acceptable Use Policy](/docs/legal/acceptable-use-policy) - Rules for using our services - [Data Processing Addendum](/docs/legal/data-processing-addendum) - GDPR and data protection terms --- # Claude Code MCP Tool Examples ## Overview This guide demonstrates practical workflows and examples for using Anysite MCP tools with Claude Code. These examples show how to leverage the CLI-based integration for development, automation, and team collaboration. ## Basic Usage ### Starting a Session with MCP Once configured, simply start Claude Code and the MCP server connects automatically: ```bash claude ``` Your Anysite tools are immediately available. Try: ``` What MCP tools do I have access to? ``` Claude will list all available Anysite tools from the connected MCP server. ### Quick Data Extraction **Example: LinkedIn Profile Analysis** ``` Extract information from this LinkedIn profile: https://linkedin.com/in/satyanadella Focus on: - Current role and company - Career progression - Education background ``` Claude will use the `linkedin_user` MCP tool to fetch and analyze the data. --- ## Scope Management Examples ### Example 1: Personal User-Scoped Setup For tools you use across all your projects: ```bash # Add to user scope (available everywhere) claude mcp add --transport http --scope user anysite "https://mcp.anysite.io/mcp?api_key=YOUR_KEY" ``` **Use case:** You're a researcher who frequently extracts LinkedIn data across multiple projects. **Benefits:** - Configure once, use everywhere - No per-project setup needed - Personal API key stays private ### Example 2: Team Project-Scoped Setup For shared team projects with version-controlled config: ```bash # Navigate to project directory cd my-team-project # Add with project scope claude mcp add --scope project anysite "https://mcp.anysite.io/mcp" \ --env API_KEY=$ANYSITE_API_KEY # Commit .mcp.json to git git add .mcp.json git commit -m "Add Anysite MCP configuration" ``` **Team members then:** ```bash # Pull the project git pull # Set their own API key export ANYSITE_API_KEY="their_key_here" # Claude Code automatically uses project config claude ``` **Benefits:** - Shared configuration - Individual API keys (not committed) - Consistent team setup ### Example 3: Temporary Local Setup For quick tests or temporary work: ```bash # Add with local scope (default) claude mcp add --transport http anysite "https://mcp.anysite.io/mcp?api_key=TEMP_KEY" # Use for this session claude # Remove when done claude mcp remove anysite ``` **Use case:** Testing with a trial API key or working on a temporary proof-of-concept. --- ## Development Workflows ### Workflow 1: Competitive Intelligence Research **Setup:** ```bash # Create research project mkdir competitor-research cd competitor-research # Add Anysite with project scope claude mcp add --scope project anysite "YOUR_URL" ``` **Usage in Claude Code:** ``` I'm researching competitors in the CRM space. For each company, get: 1. LinkedIn company pages: - https://linkedin.com/company/salesforce - https://linkedin.com/company/hubspot - https://linkedin.com/company/zoho 2. Extract: - Company size - Growth trends - Recent updates - Key executives 3. Create a comparison table ``` **Automated with script:** ```bash #!/bin/bash # research.sh companies=( "salesforce" "hubspot" "zoho" ) for company in "${companies[@]}"; do echo "Researching $company..." >> research.log claude <> enrich_data >> load_db ``` --- ## Multi-Workspace Management ### Managing Multiple Projects **Scenario:** You work on different projects with different MCP needs. ```bash # Project A: Marketing research cd ~/projects/marketing-research claude mcp add --scope project anysite-marketing "URL1" # Project B: Sales intelligence cd ~/projects/sales-intel claude mcp add --scope project anysite-sales "URL2" # Personal utilities (available everywhere) claude mcp add --scope user anysite-personal "URL3" ``` **Check current configuration:** ```bash # In any project claude mcp list # Output shows: # anysite-personal (user scope) ✔ connected # anysite-marketing (project scope, if in marketing-research/) ✔ connected ``` ### Switching Contexts ```bash # Work on marketing project cd ~/projects/marketing-research claude # Uses marketing-research/.mcp.json + user scope # Switch to sales project cd ~/projects/sales-intel claude # Uses sales-intel/.mcp.json + user scope # Personal work cd ~/documents claude # Uses only user scope ``` --- ## Advanced Techniques ### Batch Processing with Scripts **Process multiple LinkedIn profiles:** ```bash #!/bin/bash # batch_linkedin_extract.sh input_file="linkedin_urls.txt" output_dir="./extracted_data" mkdir -p "$output_dir" while IFS= read -r url; do # Extract profile ID from URL profile_id=$(echo "$url" | sed 's/.*linkedin.com\/in\///' | sed 's/\/.*//') echo "Processing: $profile_id" # Use Claude Code with MCP claude < "${output_dir}/${profile_id}.json" Extract LinkedIn profile data from: $url Output as JSON with these fields: { "profile_id": "$profile_id", "extracted_at": "$(date -Iseconds)", "data": { "name": "", "headline": "", "location": "", "current_position": {}, "experience": [], "education": [], "skills": [] } } EOF # Rate limiting sleep 2 done < "$input_file" echo "Batch processing complete. Extracted $(ls -1 "$output_dir" | wc -l) profiles." ``` ### Conditional Logic Based on MCP Data ```bash #!/bin/bash # conditional_analysis.sh company_url="https://linkedin.com/company/target-company" # Extract data and analyze result=$(claude <20% employee growth) 2. In tech industry 3. Located in US Output only: YES or NO EOF ) if [ "$result" = "YES" ]; then echo "Company matches criteria. Generating detailed report..." claude <> mcp_status.log ``` **Run periodically:** ```bash # Add to crontab 0 */4 * * * /path/to/check_mcp_status.sh ``` ### Error Handling in Scripts ```bash #!/bin/bash # robust_extraction.sh extract_with_retry() { local url=$1 local max_attempts=3 local attempt=1 while [ $attempt -le $max_attempts ]; do echo "Attempt $attempt of $max_attempts" output=$(claude <&1 Extract data from: $url Output as JSON EOF ) # Check if extraction succeeded if echo "$output" | jq . > /dev/null 2>&1; then echo "$output" return 0 fi echo "Extraction failed, retrying..." attempt=$((attempt + 1)) sleep 5 done echo "ERROR: Failed after $max_attempts attempts" return 1 } # Usage if result=$(extract_with_retry "https://linkedin.com/in/profile"); then echo "$result" > output.json echo "Success" else echo "Failed to extract data" >&2 exit 1 fi ``` --- ## Best Practices ### 1. Scope Selection Strategy #### User Scope **Use for:** - Personal API keys - Tools you use everywhere - Cross-project utilities **Example:** ```bash claude mcp add --scope user \ anysite "URL" ``` #### Project Scope **Use for:** - Team collaborations - Version-controlled configs - Project-specific setups **Example:** ```bash claude mcp add --scope project \ anysite "URL" \ --env API_KEY=$KEY ``` #### Local Scope **Use for:** - Temporary setups - Testing - Sensitive credentials **Example:** ```bash claude mcp add \ anysite-test "URL" ``` ### 2. Security Checklist - ✅ Use environment variables for API keys - ✅ Add config files to `.gitignore` - ✅ Rotate keys regularly - ✅ Use `--scope local` for sensitive keys - ✅ Audit configurations with `claude mcp list` - ✅ Remove unused servers - ❌ Never commit API keys to version control - ❌ Don't share Direct URLs publicly ### 3. Performance Optimization **Rate limiting:** ```bash # Add delays between requests for url in "${urls[@]}"; do claude <<< "Extract: $url" sleep 2 # Respect API rate limits done ``` **Batch similar requests:** ```bash # Instead of multiple calls claude < "$output_file" fi ``` --- ## Common Patterns ### Pattern 1: Daily Automated Report ```bash #!/bin/bash # daily_report.sh date=$(date +%Y-%m-%d) report_file="reports/daily_${date}.md" claude < "$report_file" Generate daily intelligence report: 1. Check these LinkedIn company pages for updates: - https://linkedin.com/company/competitor1 - https://linkedin.com/company/competitor2 2. Monitor Reddit posts in r/industry for trending topics 3. Analyze sentiment and key themes 4. Format as executive summary in markdown EOF # Email the report mail -s "Daily Intelligence Report - $date" \ -a "$report_file" \ executives@company.com < /dev/null ``` ### Pattern 2: Interactive Research Session ```bash # Start research session claude # Then interactively: ``` 1. Extract target company profile 2. Get list of key employees 3. Analyze their backgrounds 4. Identify common patterns 5. Generate hiring strategy recommendations ### Pattern 3: Data Validation Pipeline ```bash #!/bin/bash # validate_data.sh input_csv="leads.csv" output_csv="validated_leads.csv" # Validate each LinkedIn URL while IFS=, read -r id name linkedin_url; do # Check if profile exists and is accessible status=$(claude <> "$output_csv" done < "$input_csv" ``` --- ## Resources - [Installation Guide](/docs/mcp-server/claude-code-tool/installation) - [View All MCP Tools](/docs/mcp-server/tools) - [Compare with Claude Desktop](/docs/mcp-server/claude-desktop-tool/installation) - [Official Claude Code Documentation](https://docs.claude.com/en/docs/claude-code) ## Need Help? #### Get Support Contact our support team for assistance with Claude Code MCP workflows --- # Claude Code MCP Tool Installation ## Overview The Anysite MCP Tool for Claude Code provides seamless CLI-based integration between Claude Code and the Anysite API through the Model Context Protocol (MCP). This allows you to access LinkedIn, Instagram, Reddit, and other social media data extraction tools directly in your Claude Code sessions using terminal commands. ## Prerequisites - Claude Code installed ([download here](https://claude.ai/download)) - Terminal/Command line access - Anysite API account with active subscription - Basic familiarity with command line interfaces ## Why Claude Code Integration? #### CLI Control Full command-line control for developers and power users #### Scope Management Configure per-project, per-user, or locally with flexible scopes #### CI/CD Ready Perfect for automation, scripts, and continuous integration pipelines #### Version Control Project-scoped configs can be committed and shared via `.mcp.json` ## Installation Steps ### Step 1: Get Connection URL First, obtain your connection URL from the Anysite dashboard: 1. Visit [anysite.io](https://app.anysite.io/register) and log in to your account 2. Navigate to **MCP Server Integration** section 3. You'll see two connection options: - **OAuth URL**: `https://mcp.anysite.io/mcp` (for GUI clients) - **Direct URL**: Contains API key directly (recommended for Claude Code) Anysite MCP Server Integration - Get Connection URL 4. In the "Or add to your client" section, select **Claude Code** 5. The "Auto" tab will display the complete terminal command > For Claude Code, use the **Direct URL** which includes your API key in the connection string. > Keep your connection URL secure - it contains your API key. Never share it publicly or commit it to version control. ### Step 2: Install via Terminal There are two installation methods available: #### CLI Command (Recommended) Copy and run the command in your terminal: ```bash claude mcp add --transport http anysite "https://mcp.anysite.io/mcp?api_key=YOUR_API_KEY" ``` **Command breakdown:** - `claude mcp add` - Add a new MCP server - `--transport http` - Use HTTP transport (streamable) - `anysite` - Name for this server (you can customize) - `"URL"` - Your MCP URL with API key **Optional parameters:** ```bash # Add with specific scope claude mcp add --transport http --scope user anysite "https://mcp.anysite.io/mcp?api_key=YOUR_API_KEY" # Add with environment variable (more secure) export ANYSITE_API_KEY="your_key_here" claude mcp add --transport http anysite "https://mcp.anysite.io/mcp?api_key=$ANYSITE_API_KEY" ``` #### NPX Configuration Alternatively, you can configure MCP via JSON configuration file. **For macOS:** Edit `~/.claude.json` or `.mcp.json` in your project root: **For Windows:** Edit `%APPDATA%\Claude\claude_desktop_config.json` Add the following configuration: ```json { "mcpServers": { "anysite": { "command": "npx", "args": ["-y", "@anysiteio/mcp"], "env": { "ANYSITE_API_KEY": "YOUR_API_KEY", "ANYSITE_ACCOUNT_ID": "" } } } } ``` > The NPX method automatically downloads and runs the latest Anysite MCP package. It requires Node.js and npm installed on your system. **Configuration breakdown:** - `command: "npx"` - Uses npx to run the package - `args: ["-y", "@anysiteio/mcp"]` - Auto-confirms and runs the Anysite MCP package - `ANYSITE_API_KEY` - Your API key from the Anysite dashboard - `ANYSITE_ACCOUNT_ID` - Optional account ID (leave empty if not needed) **Understanding Scopes:** #### local (default) **Project-specific, private** - Configuration stored in current directory - Not shared or version controlled - Best for: Personal API keys, temporary setups ```bash claude mcp add --scope local anysite "URL" ``` #### project **Shared via version control** - Stored in `.mcp.json` in project root - Can be committed to git - Team members get same configuration - Best for: Shared resources, team projects ```bash claude mcp add --scope project anysite "URL" ``` > Don't commit API keys! Use environment variables with project scope. #### user **Cross-project, personal** - Stored in `~/.claude.json` - Available across all projects - Best for: Personal utilities, global tools ```bash claude mcp add --scope user anysite "URL" ``` ### Step 3: Verify Installation After installation, verify the MCP server is working: **List all configured servers:** ```bash claude mcp list ``` Expected output: ``` anysite (http) ✔ connected https://mcp.anysite.io/mcp?api_key=*** ``` **Test specific server:** ```bash claude mcp get anysite ``` This command: - Tests the connection to Anysite MCP server - Shows available tools - Displays server status and configuration **Check within Claude Code conversation:** During a Claude Code session, use: ``` /mcp ``` This shows real-time MCP server status and available tools. > If you see "✔ connected" status, the installation was successful! ## Managing Your Connection ### View Installed Servers ```bash # List all MCP servers claude mcp list # Get details for specific server claude mcp get anysite ``` ### Update Server Configuration To update the server URL or configuration: 1. Remove existing server: ```bash claude mcp remove anysite ``` 2. Re-add with new configuration: ```bash claude mcp add --transport http anysite "https://mcp.anysite.io/mcp?api_key=YOUR_API_KEY" ``` ### Remove Server ```bash claude mcp remove anysite ``` > **Known Issue**: `claude mcp remove` may not properly remove project-scoped servers. If this happens, manually edit: - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json` - Windows: `%APPDATA%\Claude\claude_desktop_config.json` ### Debug Mode For troubleshooting connection issues: ```bash claude --mcp-debug ``` This runs Claude Code with detailed MCP debug output, showing: - Connection attempts - Tool discovery - Error messages - Transport details ## Configuration Files Claude Code stores MCP configurations in different locations based on scope: | Scope | Location | Purpose | |-------|----------|---------| | **local** | `./.claude-local.json` | Current directory only | | **project** | `./.mcp.json` | Project root, version control | | **user** | `~/.claude.json` | User's home directory | ## Troubleshooting #### Server shows as added but won't connect **Solutions:** - Restart Claude Code completely - Verify the API key is valid and active - Check internet connectivity - Test the URL in browser (should return JSON) - Use debug mode: `claude --mcp-debug` - Check Anysite dashboard for API quota #### Tools not appearing after installation **Solutions:** - Restart Claude Code application - Run `claude mcp get anysite` to test connection - Verify subscription includes the tools you need - Remove and re-add the server: ```bash claude mcp remove anysite claude mcp add --transport http anysite "https://mcp.anysite.io/mcp?api_key=YOUR_API_KEY" ``` - Check if API key has expired #### Error: 'claude' command not found **Solutions:** - Ensure Claude Code is properly installed - Add Claude Code to your PATH: - macOS: Add to `~/.zshrc` or `~/.bashrc` - Windows: Add to System Environment Variables - Restart terminal after installation - Try full path: `/Applications/Claude.app/Contents/MacOS/claude` (macOS) #### Connection timeout or slow responses **Solutions:** - Check your internet connection speed - Increase timeout with environment variable: ```bash MCP_TIMEOUT=30000 claude # 30 seconds ``` - Try during off-peak hours - Contact Anysite support if persistent #### Configuration conflicts between scopes **Issue:** Same server configured at multiple scopes **Solutions:** - List all servers to identify duplicates: ```bash claude mcp list ``` - Remove from specific scope: ```bash # Remove from local rm ./.claude-local.json # Remove from project rm ./.mcp.json # Remove from user claude mcp remove anysite ``` - Re-add with desired scope only #### API key security concerns **Best practices:** 1. **Use environment variables:** ```bash export ANYSITE_API_KEY="your_key" claude mcp add --transport http anysite "https://mcp.anysite.io/mcp?api_key=$ANYSITE_API_KEY" ``` 2. **Never commit keys to git:** ```bash # Add to .gitignore echo ".claude-local.json" >> .gitignore echo ".mcp.json" >> .gitignore ``` 3. **Use project scope with env vars:** ```bash # Team can share config, but not keys claude mcp add --scope project --transport http anysite "https://mcp.anysite.io/mcp?api_key=$ANYSITE_API_KEY" ``` 4. **Rotate keys regularly** from Anysite dashboard ## Advanced Configuration ### Multiple Environments Configure different servers for dev/staging/production: ```bash # Development claude mcp add --transport http --scope local anysite-dev "https://mcp.anysite.io/mcp?api_key=DEV_KEY" # Production claude mcp add --transport http --scope user anysite-prod "https://mcp.anysite.io/mcp?api_key=PROD_KEY" ``` ### Custom Server Names Use descriptive names for better organization: ```bash # By team claude mcp add --transport http marketing-anysite "https://mcp.anysite.io/mcp?api_key=YOUR_API_KEY" # By project claude mcp add --transport http project-alpha-anysite "https://mcp.anysite.io/mcp?api_key=YOUR_API_KEY" # By environment claude mcp add --transport http anysite-staging "https://mcp.anysite.io/mcp?api_key=YOUR_API_KEY" ``` ### Alternative: NPX Package You can also use the NPX package method for more flexibility: ```json { "mcpServers": { "anysite": { "command": "npx", "args": ["-y", "@anysiteio/mcp"], "env": { "ANYSITE_API_KEY": "YOUR_API_KEY", "ANYSITE_ACCOUNT_ID": "" } } } } ``` This method: - Auto-updates to the latest package version - Works across different environments consistently - Supports additional environment variables for customization ## Comparison: Claude Code vs Other Integrations | Feature | Claude Code (CLI) | Claude Desktop (GUI) | Local Server | |---------|-------------------|----------------------|--------------| | **Interface** | Command line | Graphical settings | Config files | | **Setup** | Terminal command | Click-through OAuth | Python server | | **Best For** | Developers, automation | General users | Full control | | **Scope Control** | ✅ local/project/user | ❌ Global only | ✅ Per config | | **CI/CD Ready** | ✅ Yes | ❌ No | ✅ Yes | | **Auto Updates** | ❌ Manual | ✅ Automatic | ❌ Manual | | **Debugging** | ✅ `--mcp-debug` | ⚠️ Limited | ✅ Full logs | | **Team Sharing** | ✅ Via `.mcp.json` | ❌ Per machine | ✅ Via git | | **Security** | ⚠️ API key in config | ✅ OAuth tokens | ⚠️ API key in env | ## Environment Variables Useful environment variables for Claude Code MCP: ```bash # Connection timeout (milliseconds) export MCP_TIMEOUT=15000 # Maximum output tokens from MCP tools export MAX_MCP_OUTPUT_TOKENS=50000 # Warning threshold for large outputs export MCP_OUTPUT_WARNING_THRESHOLD=10000 # Run with debug mode export CLAUDE_MCP_DEBUG=1 ``` Add to your shell profile (`~/.zshrc`, `~/.bashrc`) for persistent settings. ## Security Best Practices #### Environment Variables Store API keys in environment variables, never hardcode in commands #### Scope Selection Use `local` scope for sensitive keys, `project` for shared configs #### Git Ignore Always add `.claude-local.json` and `.mcp.json` to `.gitignore` #### Key Rotation Regularly regenerate API keys from Anysite dashboard #### Audit Access Review configured servers periodically with `claude mcp list` #### Remove Unused Clean up old server configs to reduce security surface ## Next Steps - [Explore Usage Examples](/docs/mcp-server/claude-code-tool/examples) - [View All Available Tools](/docs/mcp-server/tools) - [Compare with Claude Desktop](/docs/mcp-server/claude-desktop-tool/installation) - [Try Local Server Setup](/docs/mcp-server/local-server/installation) ## Need Help? #### Get Support Contact our support team for assistance with Claude Code MCP integration --- # Claude Desktop MCP Tool Examples ## Overview This guide shows practical examples of using Anysite MCP tools directly in Claude Desktop conversations. These examples demonstrate natural language interactions that leverage the power of MCP tools. ## Permission Modes Before diving into examples, understand the two permission modes: #### Always Ask Permission Claude will request approval before each tool use. You'll see prompts like: > "I'd like to use the Get linkedin profile tool to extract information from this profile. May I proceed?" **Best for**: Sensitive data, production use, learning how tools work #### Allow Unsupervised Claude can use tools automatically without asking. More fluid conversations. **Best for**: Frequent use, trusted tools, development work > Start with "Always ask permission" to understand tool behavior, then switch to "Allow unsupervised" for smoother workflows. --- ## Example 1: LinkedIn Profile Research ### Simple Profile Extraction **Your prompt:** ``` Can you get me information about this LinkedIn profile? https://linkedin.com/in/satyanadella ``` **Claude's response flow:** 1. **Tool Request** (if permission required): > "I'll use the Get linkedin profile tool to extract detailed information from this profile." 2. **Tool Execution**: Calls `linkedin_user` tool with the URL 3. **Structured Response**: > "Here's the information from Satya Nadella's LinkedIn profile: > > **Name**: Satya Nadella > **Headline**: Chairman and CEO at Microsoft > **Location**: Redmond, Washington > **Company**: Microsoft > **Industry**: Technology, Information and Internet > > **Experience**: > - Chairman and CEO at Microsoft (2014-Present) > - Executive Vice President, Cloud and Enterprise at Microsoft > - President, Server and Tools Business at Microsoft > > **Education**: > - University of Chicago - MBA > - University of Wisconsin-Milwaukee - MS > - Manipal Institute of Technology - Bachelor's degree > > Would you like me to analyze any specific aspect of this profile?" ### Comparative Profile Analysis **Your prompt:** ``` Compare these three LinkedIn profiles and tell me who would be the best fit for a CTO role at a startup: 1. https://linkedin.com/in/person1 2. https://linkedin.com/in/person2 3. https://linkedin.com/in/person3 ``` **Claude's workflow:** 1. Extracts all three profiles using `linkedin_user` tool 2. Analyzes experience, skills, and background 3. Provides comparative analysis with recommendations --- ## Example 2: Company Research ### Basic Company Information **Your prompt:** ``` Tell me about Microsoft as a company. Use their LinkedIn company page: https://linkedin.com/company/microsoft ``` **Claude's response includes:** - Company size and headcount - Industry and specialties - Recent updates and posts - Employee growth trends - Key company information ### Competitive Analysis **Your prompt:** ``` I'm researching cloud computing companies. Can you compare these companies and provide insights on their positioning? 1. Microsoft: https://linkedin.com/company/microsoft 2. Amazon Web Services: https://linkedin.com/company/aws 3. Google Cloud: https://linkedin.com/company/google-cloud ``` **Claude will:** - Extract company data from all three profiles - Compare size, growth, specialties - Analyze recent company updates - Provide strategic insights --- ## Example 3: Content Monitoring ### Reddit Post Analysis **Your prompt:** ``` Analyze this Reddit post and summarize the discussion: https://reddit.com/r/technology/comments/abc123/ai-breakthrough ``` **Claude extracts and provides:** - Post title, author, and content - Upvote/downvote ratio - Number of comments - Top comments summary - Discussion sentiment - Key themes and topics ### Multi-Platform Content Analysis **Your prompt:** ``` I want to understand the conversation around "AI safety" across platforms. Reddit: https://reddit.com/r/artificial/comments/xyz/ai-safety-discussion LinkedIn Post: https://linkedin.com/posts/johndoe-ai-safety-12345 Can you analyze both and compare the sentiment and key points? ``` **Claude will:** 1. Extract Reddit post and comments 2. Extract LinkedIn post and comments 3. Compare discussion quality and sentiment 4. Identify common themes and unique perspectives --- ## Example 4: Instagram Content Analysis ### Single Post Analysis **Your prompt:** ``` Analyze this Instagram post for me: https://instagram.com/p/ABC123xyz/ I want to understand the engagement and comments. ``` **Claude extracts:** - Post caption and hashtags - Like count and engagement rate - Top comments - Comment sentiment analysis - Engagement insights ### Influencer Evaluation **Your prompt:** ``` I'm considering partnering with this Instagram influencer. Can you analyze their recent posts and engagement? Profile: https://instagram.com/influencername Recent posts: - https://instagram.com/p/POST1/ - https://instagram.com/p/POST2/ - https://instagram.com/p/POST3/ ``` **Claude provides:** 1. Individual post analytics 2. Average engagement rate 3. Comment quality assessment 4. Audience interaction patterns 5. Recommendation on partnership potential --- ## Example 5: Research Workflows ### Market Research **Your prompt:** ``` I'm researching the cybersecurity industry. Can you help me build a profile of key companies and thought leaders? Start with these companies: - https://linkedin.com/company/crowdstrike - https://linkedin.com/company/paloaltonetworks And these thought leaders: - https://linkedin.com/in/leader1 - https://linkedin.com/in/leader2 ``` **Claude's comprehensive analysis:** 1. Company profiles and positioning 2. Key personnel and thought leaders 3. Industry trends from recent posts 4. Competitive landscape insights 5. Actionable recommendations ### Lead Generation **Your prompt:** ``` I'm looking for potential clients who are CTOs in the healthcare industry in the San Francisco Bay Area. Can you search LinkedIn and provide me with a list of profiles that match this criteria? ``` **Claude uses:** - `search_linkedin_users` tool - Filters by job title, industry, location - Provides structured list with profile details - Suggests outreach strategies --- ## Example 6: Due Diligence ### Startup Founder Verification **Your prompt:** ``` I'm considering investing in a startup. Can you help me verify the founders' backgrounds? Founder 1: https://linkedin.com/in/founder1 Founder 2: https://linkedin.com/in/founder2 I want to verify their experience, education, and credibility. ``` **Claude analyzes:** - Work history and tenure at companies - Education credentials - Skills and endorsements - Recommendations and activity - Red flags or inconsistencies - Overall credibility assessment --- ## Example 7: Content Strategy ### Competitor Content Analysis **Your prompt:** ``` Analyze the LinkedIn content strategy of this company: https://linkedin.com/company/competitor What types of posts get the most engagement? What themes do they focus on? ``` **Claude examines:** - Recent company posts - Engagement metrics per post - Content types (articles, videos, images) - Posting frequency - Audience response patterns - Recommendations for your content strategy --- ## Example 8: Multi-Tool Workflows ### Comprehensive Person Investigation **Your prompt:** ``` I need a comprehensive background check on this person: LinkedIn: https://linkedin.com/in/person Instagram: https://instagram.com/username Reddit: https://reddit.com/user/username Can you build me a profile across all platforms? ``` **Claude orchestrates:** 1. LinkedIn profile extraction (professional background) 2. Instagram analysis (personal brand, interests) 3. Reddit activity (opinions, expertise areas) 4. Unified profile synthesis 5. Insights on consistency across platforms ### Brand Monitoring **Your prompt:** ``` Monitor mentions of our brand across these platforms: Reddit: Search for "BrandName" in r/technology LinkedIn: Our company page updates Instagram: Posts with #BrandName Summarize sentiment and key feedback. ``` **Claude provides:** - Cross-platform sentiment analysis - Key feedback themes - Positive and negative mentions - Actionable insights - Trend identification --- ## Best Practices for Prompting ### Be Specific #### ❌ Vague "Tell me about this person" #### ✅ Specific "Extract this person's work experience, education, and top 3 skills from their LinkedIn profile" ### Provide Complete URLs #### ❌ Incomplete "Check out the microsoft company page" #### ✅ Complete "Analyze https://linkedin.com/company/microsoft" ### Request Structured Output **Good prompt:** ``` Extract the following from this LinkedIn profile and format as a table: - Name - Current role - Company - Years of experience - Top 5 skills - Education URL: https://linkedin.com/in/username ``` ### Combine Analysis with Data **Good prompt:** ``` Get information from this LinkedIn profile and then: 1. Summarize their career trajectory 2. Identify their core expertise areas 3. Suggest how they could be valuable to our company 4. Draft an outreach message URL: https://linkedin.com/in/candidate ``` --- ## Advanced Techniques ### Batch Processing **Your prompt:** ``` I have a list of 20 LinkedIn profiles to analyze. Here's the first batch of 5: [URLs] For each profile, extract: name, title, company, and years of experience. Present in a table format. ``` ### Conditional Logic **Your prompt:** ``` Check this LinkedIn profile: [URL] If the person has 10+ years of experience in software engineering, provide a detailed technical background summary. If they have less than 10 years, just give me a brief overview. ``` ### Data Export Requests **Your prompt:** ``` Extract data from these 10 LinkedIn profiles and format it as CSV that I can copy and paste into a spreadsheet: [URLs] Columns: Name, Title, Company, Location, Years of Experience, LinkedIn URL ``` --- ## Tips for Effective Use #### Start Simple, Then Iterate Begin with basic extraction, then ask follow-up questions to dive deeper: 1. "Get this LinkedIn profile: [URL]" 2. "Now analyze their career progression" 3. "What skills should they develop for a CTO role?" #### Use Follow-Up Questions Claude maintains context, so you can ask follow-ups: - "Can you elaborate on their education background?" - "What about their recommendations?" - "Compare this to the previous profile you analyzed" #### Request Different Formats Ask for the format you need: - "Provide as bullet points" - "Format as a table" - "Create a JSON structure" - "Draft an email summary" #### Combine with Claude's Analysis Don't just extract data - ask for insights: - "What stands out about this profile?" - "What are the red flags?" - "How does this compare to industry standards?" - "What questions should I ask in an interview?" --- ## Troubleshooting Common Issues ### Tool Permission Denied **Issue**: Claude says "I don't have permission to use that tool" **Solution**: 1. Go to Settings → Connectors 2. Find Anysite MCP connector 3. Enable the specific tool 4. Change permission to "Allow unsupervised" or "Always ask permission" ### Rate Limiting **Issue**: "Rate limit exceeded" errors **Solution**: - Check your Anysite dashboard for API quota - Space out requests over time - Consider upgrading your Anysite plan ### Invalid URLs **Issue**: Tool fails with "Invalid URL" error **Solution**: - Ensure URLs are complete (include https://) - Verify the URL is accessible and public - Check for typos in the URL ### Incomplete Data **Issue**: Some profile fields are missing **Solution**: - This is normal - not all profiles have all fields - Ask Claude to note which fields are available - Some data may be privacy-protected by the user --- ## Performance Tips 1. **Group Related Requests**: Ask for multiple profiles in one prompt rather than separate conversations 2. **Be Patient**: Some tools may take 5-10 seconds to fetch data 3. **Cache Results**: Once data is extracted, ask follow-up questions in the same conversation 4. **Use Specific Tools**: If you know which tool you need, mention it: "Use the linkedin_user tool to..." 5. **Save Conversations**: Bookmark or export conversations with valuable research --- ## Integration with Your Workflow ### Research Documentation After Claude extracts data, you can: - Copy responses to your notes - Ask Claude to format as markdown for documentation - Request structured data for spreadsheets - Generate reports from multiple sources ### CRM Integration Use extracted data to populate CRM fields: ``` Extract this LinkedIn profile and format it as CRM fields: - First Name: - Last Name: - Title: - Company: - Email: [if available] - Phone: [if available] - LinkedIn URL: - Notes: [career highlights] ``` ### Decision Support Use analysis for hiring, partnerships, investments: ``` Based on this profile [URL], should we: 1. Proceed with interview? (Yes/No and why) 2. What role best suits them? 3. What concerns should we address? 4. What's the likelihood they're open to opportunities? ``` --- ## Next Steps - [View All Available MCP Tools](/docs/mcp-server/tools) - [Installation Guide](/docs/mcp-server/claude-desktop-tool/installation) - [Learn About Local Server](/docs/mcp-server/local-server/installation) - [Explore n8n Integration](/docs/mcp-server/n8n-tool/installation) ## Need Help? #### Get Support Contact our support team for assistance with Claude Desktop MCP usage --- # Claude Desktop MCP Tool Installation ## Overview The Anysite MCP Tool for Claude Desktop provides seamless integration between Claude Desktop and the Anysite API through the Model Context Protocol (MCP). This allows Claude to extract LinkedIn, Instagram, Reddit, and other social media data directly within your conversations using OAuth authentication. ## Prerequisites - Claude Desktop application installed ([download here](https://claude.ai/download)) - Anysite API account with active subscription - Internet connection for OAuth authentication ## Why Claude Desktop Integration? #### OAuth Security Secure OAuth 2.0 authentication - no API keys stored locally #### Native Integration Built-in connector support with easy setup through Claude Desktop settings #### Permission Control Granular control over which tools Claude can access and when #### Auto Updates Automatic tool updates without manual configuration changes ## Installation Steps ### Step 1: Get OAuth Connection URL First, obtain your OAuth URL from the Anysite dashboard: 1. Visit [anysite.io](https://app.anysite.io/register) and log in to your account 2. Navigate to **MCP Server Integration** section 3. You'll see two connection options: - **OAuth URL**: `https://mcp.anysite.io/mcp` (recommended for Claude Desktop) - **Direct URL**: Contains API key (use for other clients) Anysite MCP Server Integration - Get OAuth URL 4. In the "Or add to your client" section, select **Claude Desktop** 5. The "Auto" tab will show you the installation instructions: - **Step 1**: Copy the OAuth URL: `https://mcp.anysite.io/mcp` - **Step 2**: Instructions for adding connector to Claude Desktop > For Claude Desktop, always use the **OAuth URL** (not Direct URL) for better security and automatic credential management. ### Step 2: Add Custom Connector in Claude Desktop Now configure the connector in Claude Desktop: 1. Open **Claude Desktop** application 2. Navigate to **Settings** (gear icon in the bottom-left) 3. Click on **Connectors** tab 4. Click the **Add Custom Connector** button Add Custom Connector in Claude Desktop 5. Fill in the connector details: - **Connector Name**: Enter "Anysite MCP" (or any name you prefer) - **OAuth URL**: Paste `https://mcp.anysite.io/mcp` 6. Expand **Advanced settings** if needed (usually defaults are fine) 7. You'll see a warning: "⚠ Confirm that you trust this connector" - This is normal for custom connectors - Read: "This connector has not been verified by Anthropic. You are responsible for all actions taken with Claude." 8. Click **Add** button to save the connector > Only add connectors from trusted sources. The Anysite MCP connector is safe and only accesses data through the Anysite API with your explicit permission. ### Step 3: Connect the Connector After adding the connector, you need to establish the connection: Connect Button in Connector Settings 1. In the Connectors settings, find your newly added "Anysite MCP" connector 2. Click the **Connect** button (with arrow icon) 3. This will open your default web browser for OAuth authentication ### Step 4: Authorize Application Complete the OAuth authorization process: Authorize Application Screen 1. You'll see the **"AUTHORIZE APPLICATION"** screen 2. Review the information: - **Application**: Claude Desktop - **Access**: "This application will be able to access your data on your behalf" - **Permissions**: "Access your account" 3. Note: "You can revoke access at any time from your account settings" 4. Click **ALLOW ACCESS** button to grant permission 5. Or click **DENY** if you changed your mind > After authorization, you'll be redirected back to Claude Desktop, and the connector will show as "Connected". ### Step 5: Enable "Tools already loaded" Mode > **Required setting** — without this, Claude may fail to find the right Anysite tools for your requests. The Anysite MCP Server uses a meta-tool architecture with 5 universal tools (`discover`, `execute`, `get_page`, `query_cache`, `export_data`). The default "Load tools when needed" mode searches by tool name only and often fails to match generic names like `discover` to queries like "Find Dario Amodei on LinkedIn". 1. Open **Settings** in Claude Desktop 2. Go to **Feature Preview** section 3. Find **Tool access** → **Tool access mode** 4. Select **"Tools already loaded"** Tool access setting - select Tools already loaded With "Tools already loaded", all 5 meta-tools and server instructions are always in Claude's context. Since there are only 5 tools (not 70+), the context overhead is minimal. ### Step 6: Manage Tool Permissions Configure which tools Claude can use and how: Anysite Tools Configuration in Claude Desktop 1. In the Connectors settings, you'll see your connected "Anysite remote" connector 2. Click on it to view available **Tools** 3. Each tool can be toggled on/off and has permission settings: **Available Tools:** - **discover** — Learn what endpoints and parameters are available - **execute** — Fetch data from any of 115+ endpoints - **get_page** — Paginate through large result sets - **query_cache** — Filter, sort, and aggregate cached results server-side - **export_data** — Download datasets as JSON/CSV/JSONL **Permission Levels:** - **Allow unsupervised** - Claude can use the tool without asking each time - **Always ask permission** - You'll be prompted before each tool use - **Disabled** - Tool is not available for use > Start with "Always ask permission" for all tools until you're comfortable with how they work. Then switch frequently-used tools to "Allow unsupervised" for smoother workflows. ## Verification Test your MCP integration: 1. Start a new conversation in Claude Desktop 2. Ask: "What MCP tools do you have access to?" 3. Claude should list all enabled Anysite tools 4. Try a simple request: "Get me information about this LinkedIn profile: https://linkedin.com/in/username" > If everything is working correctly, Claude will either: - Use the tool directly (if "Allow unsupervised") - Ask for your permission to use the tool (if "Always ask permission") ## Managing Your Connection ### Disconnect Connector To disconnect the Anysite MCP connector: 1. Go to Settings → Connectors 2. Find "Anysite MCP" connector 3. Click **Disconnect** ### Revoke Access To fully revoke access from Anysite side: 1. Visit [anysite.io](https://app.anysite.io/register) 2. Go to Account Settings 3. Navigate to Connected Applications 4. Find "Claude Desktop" and revoke access ### Reconnect If you need to reconnect: 1. Click the **Connect** button again in Claude Desktop 2. You may need to re-authorize through OAuth if access was revoked ## Troubleshooting #### Connector won't connect or shows error **Solutions:** - Ensure your Anysite account is active with valid subscription - Check your internet connection - Try disconnecting and reconnecting the connector - Clear Claude Desktop cache and restart the application - Verify the OAuth URL is exactly: `https://mcp.anysite.io/mcp` #### OAuth authorization fails or times out **Solutions:** - Ensure you're logged in to your Anysite account in the browser - Check if popup blockers are preventing the OAuth window - Try using a different browser as default - Clear browser cookies for anysite.io and retry - Check if your firewall is blocking api.anysite.io #### Tools not appearing after connection **Solutions:** - Restart Claude Desktop completely - Disconnect and reconnect the connector - Check if your Anysite subscription includes the tools you need - Verify tool toggles are enabled (switched on) - Try asking Claude explicitly: "Show me all available MCP tools" #### Tools show but don't work / return errors **Solutions:** - Check API rate limits in your Anysite dashboard - Verify your subscription is active and not expired - Ensure you're providing valid input (e.g., correct LinkedIn URLs) - Check if specific tools have permission set to "Disabled" - Review error messages for specific guidance #### Permission prompts too frequent **Solutions:** - Change permission level from "Always ask permission" to "Allow unsupervised" for trusted tools - Note: "Allow unsupervised" means Claude can use tools without asking each time - You can always change permissions back if needed #### Connector shows as 'Custom' instead of verified **Solutions:** - This is expected behavior - Anysite MCP is a custom connector - "CUSTOM" label means it's not built-in to Claude Desktop - This is completely normal and doesn't affect functionality - Only add custom connectors from sources you trust ## Security & Privacy #### OAuth Security OAuth 2.0 ensures your API keys never touch your local machine. Authentication tokens are managed securely. #### Revocable Access You can revoke Claude Desktop's access to Anysite at any time from your account settings. #### Audit Trail All API requests are logged in your Anysite dashboard for transparency and monitoring. #### Permission Control Granular control over which tools Claude can use and whether approval is needed. ## Best Practices 1. **Start Restrictive**: Begin with "Always ask permission" for all tools until you understand their behavior 2. **Regular Reviews**: Periodically review which tools are enabled and their permission levels 3. **Monitor Usage**: Check your Anysite dashboard regularly for API usage and quota 4. **Secure Account**: Use strong passwords and enable 2FA on your Anysite account 5. **Test First**: Try tools with sample data before using them on sensitive or production data 6. **Update Regularly**: Keep Claude Desktop updated to get the latest connector features 7. **Document Workflows**: Note which tools work best for your specific use cases ## Comparison: OAuth vs Local Server | Feature | Claude Desktop (OAuth) | Local Server | |---------|----------------------|--------------| | **Setup Complexity** | Easy (GUI-based) | Moderate (command line) | | **Authentication** | OAuth 2.0 (secure) | Environment variables | | **Credentials** | Managed automatically | Manual configuration | | **Tool Updates** | Automatic | Requires git pull | | **Best For** | General users, production | Developers, testing | | **Security** | OAuth tokens | API keys in config | | **Revocation** | One-click disconnect | Manual removal | ## Next Steps - [Explore Usage Examples](/docs/mcp-server/claude-desktop-tool/examples) - [View All Available Tools](/docs/mcp-server/tools) - [Learn About Local Server Setup](/docs/mcp-server/local-server/installation) - [Try n8n Integration](/docs/mcp-server/n8n-tool/installation) ## Need Help? #### Get Support Contact our support team for assistance with Claude Desktop MCP integration --- # Cursor MCP Tool Examples ## Overview This guide demonstrates practical workflows and examples for using Anysite MCP tools with Cursor IDE. These examples show how to leverage the AI-powered IDE integration for development, research, and data-driven coding. ## Basic Usage ### Starting with MCP in Cursor Once configured, simply open Cursor and start a chat with the AI assistant: ``` What MCP tools do I have access to? ``` Cursor AI will list all available Anysite tools from the connected MCP server. ### Quick Data Extraction **Example: LinkedIn Profile Analysis** In Cursor AI Chat, type: ``` Extract information from this LinkedIn profile: https://linkedin.com/in/satyanadella Focus on: - Current role and company - Career progression - Education background ``` Cursor will use the `linkedin_user` MCP tool to fetch and analyze the data. --- ## Development Workflows ### Workflow 1: Building a Sales Intelligence Feature **Scenario:** You're building a CRM feature that needs LinkedIn data enrichment. **Step 1: Define the data model** In Cursor AI: ``` I'm building a lead enrichment feature. Extract data from this LinkedIn profile and suggest a TypeScript interface based on the available data: https://linkedin.com/in/example-profile ``` **Step 2: Generate the code** ``` Using the LinkedIn data structure we just saw, create a TypeScript service that fetches and transforms LinkedIn data for our CRM. Include error handling and rate limiting. ``` **Step 3: Test with real data** ``` Test the service by extracting data from these profiles: - linkedin.com/in/profile1 - linkedin.com/in/profile2 Validate that the response matches our interface. ``` ### Workflow 2: Competitive Analysis Tool **Project setup:** ``` my-competitor-tool/ ├── .cursor/ │ └── mcp.json # MCP configuration ├── src/ │ ├── analyzers/ │ │ └── company.ts │ └── types/ │ └── linkedin.ts └── package.json ``` **In Cursor AI Chat:** ``` I'm building a competitor analysis tool. For these companies: - https://linkedin.com/company/competitor1 - https://linkedin.com/company/competitor2 Extract: 1. Employee count and growth 2. Recent job postings 3. Key executives Then generate TypeScript code to fetch and compare this data periodically. ``` ### Workflow 3: Lead Scoring System **Define scoring criteria:** ``` I'm building a lead scoring system. For this LinkedIn profile: https://linkedin.com/in/potential-lead Extract relevant data and suggest scoring criteria based on: - Seniority level - Company size - Industry relevance - Engagement signals Then create a TypeScript function that scores leads. ``` --- ## Real-time Data in Code ### Example 1: Dynamic Data Fetching **In your project, ask Cursor:** ``` I need to fetch LinkedIn company data dynamically in my Node.js app. Extract sample data from https://linkedin.com/company/target-company and create an API endpoint that returns this structure. ``` **Cursor generates:** ```typescript // src/api/company.ts import { Router } from 'express'; interface LinkedInCompany { name: string; industry: string; size: string; location: string; description: string; employeeCount: number; // ... based on extracted data } const router = Router(); router.get('/company/:slug', async (req, res) => { const { slug } = req.params; // MCP tool integration would go here const companyData = await fetchLinkedInCompany(slug); res.json(companyData); }); export default router; ``` ### Example 2: Data Validation **Validate your data models against real data:** ``` Compare this TypeScript interface with actual LinkedIn profile data: interface UserProfile { name: string; headline: string; location: string; experience: Experience[]; } Extract data from linkedin.com/in/test-profile and identify any missing fields. ``` ### Example 3: Generate Test Fixtures ``` Extract real data from these profiles: - linkedin.com/in/engineer-profile - linkedin.com/in/manager-profile - linkedin.com/in/executive-profile Generate TypeScript test fixtures that represent typical data variations. ``` --- ## Multi-Platform Research ### Combining Data Sources **Research a person across platforms:** ``` Research this person comprehensively: - LinkedIn: linkedin.com/in/target-person - Instagram: @target_person (if available) - Reddit activity: u/target_person Compile a unified profile and identify patterns in their online presence. ``` ### Monitoring Competitors ``` For competitive intelligence, analyze: 1. Company LinkedIn: linkedin.com/company/competitor 2. Recent Reddit mentions: search "competitor name" in r/industry Generate a monitoring report and suggest React components to display this data. ``` --- ## Code Generation with Live Data ### Generate API Wrappers ``` Extract the full data structure from linkedin.com/in/sample-profile and generate: 1. TypeScript interfaces for all data types 2. A complete API client class 3. Zod validation schemas 4. Jest test cases with the real data as fixtures ``` ### Generate Database Schemas ``` Based on LinkedIn company data from linkedin.com/company/example: Generate: 1. Prisma schema for storing this data 2. Database migrations 3. CRUD operations ``` ### Generate Documentation ``` Using the LinkedIn profile data structure, generate: 1. JSDoc comments for each field 2. API documentation in OpenAPI format 3. README with usage examples ``` --- ## Debugging with MCP Data ### Validate API Responses **When your API isn't returning expected data:** ``` My API is supposed to return LinkedIn-like data. Here's what I'm getting: [paste your API response] Compare this to actual LinkedIn data from linkedin.com/in/test-profile and identify discrepancies. ``` ### Debug Data Transformations ``` I'm transforming LinkedIn data but getting unexpected results. Here's my transformer: [paste your code] Fetch fresh data from linkedin.com/in/test-profile and show me step-by-step how it should be transformed. ``` --- ## Advanced Techniques ### Batch Processing Pattern **For processing multiple profiles:** ``` I need to process 100 LinkedIn profiles. Design a system that: 1. Handles rate limiting 2. Implements retry logic 3. Caches results 4. Reports progress Start by extracting sample data from these profiles: - linkedin.com/in/profile1 - linkedin.com/in/profile2 - linkedin.com/in/profile3 ``` ### Event-Driven Architecture ``` Design an event-driven system for LinkedIn data updates: 1. Fetch initial data from linkedin.com/company/target 2. Create event types for data changes 3. Implement change detection 4. Generate notification handlers Show me the TypeScript implementation. ``` ### Data Pipeline Integration ``` I'm building an ETL pipeline for LinkedIn data. Design: 1. Extraction layer (using MCP tools) 2. Transformation layer (normalize data) 3. Loading layer (to PostgreSQL) Include error handling and monitoring. Demonstrate with data from linkedin.com/company/example ``` --- ## Best Practices ### 1. Data Model First Always extract real data before designing your data models: ``` Before I design my database schema, show me the actual data structure from linkedin.com/in/representative-profile ``` ### 2. Incremental Development Build features incrementally with real data validation: ``` Step 1: Show me LinkedIn profile data structure Step 2: Generate TypeScript interface Step 3: Create fetch function Step 4: Add error handling Step 5: Test with 3 different profiles ``` ### 3. Security Considerations #### Never Hardcode Keys Always use environment variables for API keys in your `.cursor/mcp.json` #### Git Ignore Config Add `.cursor/mcp.json` to `.gitignore` if it contains API keys #### Mask Sensitive Data When sharing code or screenshots, mask any personal data from extractions #### Rate Limit Aware Design your code to respect API rate limits from the start ### 4. Testing Strategy ``` For my LinkedIn integration tests, I need: 1. Mock data based on real responses (extract from linkedin.com/in/test) 2. Edge case handling (empty profiles, private accounts) 3. Error simulation (rate limits, network failures) Generate comprehensive test suite. ``` --- ## Common Patterns ### Pattern 1: Profile Enrichment Service ```typescript // Ask Cursor to generate based on real data extraction class ProfileEnrichmentService { async enrich(linkedinUrl: string): Promise { // Implementation with MCP tool integration } } ``` **In Cursor:** ``` Extract data from linkedin.com/in/sample-profile and complete this ProfileEnrichmentService class with proper typing and error handling. ``` ### Pattern 2: Company Intelligence Dashboard ``` Design a React dashboard that displays: 1. Company overview (extract from linkedin.com/company/target) 2. Employee growth chart 3. Recent updates timeline 4. Key people section Generate components with TailwindCSS styling. ``` ### Pattern 3: Lead Qualification Workflow ``` Build a lead qualification workflow that: 1. Takes a LinkedIn URL input 2. Extracts profile data 3. Scores based on criteria 4. Returns qualification result Test with linkedin.com/in/potential-lead ``` --- ## Troubleshooting #### MCP tools not available in Cursor AI **Solutions:** - Reload Cursor window (Cmd/Ctrl + Shift + P → "Reload Window") - Verify `.cursor/mcp.json` syntax is valid - Check that Node.js is installed - Ensure API key is correct #### Slow data extraction **Solutions:** - Check your internet connection - Verify API rate limits in Anysite dashboard - Consider caching frequently accessed data - Use batch requests when possible #### Data format mismatches **Solutions:** - Always extract fresh data before defining types - Use runtime validation (Zod, io-ts) - Handle optional fields gracefully - Log raw responses during development #### API key issues **Solutions:** - Regenerate key from Anysite dashboard - Check for extra whitespace in config - Verify subscription is active - Test with direct API call first --- ## Resources - [Installation Guide](/docs/mcp-server/cursor-tool/installation) - [View All MCP Tools](/docs/mcp-server/tools) - [Compare with Claude Code](/docs/mcp-server/claude-code-tool/installation) - [Cursor Documentation](https://docs.cursor.com) ## Need Help? #### Get Support Contact our support team for assistance with Cursor MCP workflows --- # Cursor MCP Tool Installation ## Overview The Anysite MCP Tool for Cursor provides seamless integration between Cursor IDE and the Anysite API through the Model Context Protocol (MCP). This allows you to access LinkedIn, Instagram, Reddit, and other social media data extraction tools directly within your Cursor AI coding sessions. ## Prerequisites - Cursor IDE installed ([download here](https://cursor.com)) - Node.js and npm installed (for NPX method) - Anysite API account with active subscription - Basic familiarity with JSON configuration ## Why Cursor Integration? #### AI-Powered Coding Access data extraction tools while coding with Cursor's AI assistant #### Project Integration Configure MCP per-project or globally for all your workspaces #### Real-time Data Extract social media data directly in your development workflow #### Developer Friendly JSON-based configuration that's easy to version control and share ## Installation Steps ### Step 1: Get Your API Key First, obtain your API key from the Anysite dashboard: 1. Visit [app.anysite.io](https://app.anysite.io) and log in to your account 2. Navigate to **MCP Server Integration** section 3. Copy your API key from the dashboard > Keep your API key secure - never share it publicly or commit it to version control. ### Step 2: Configure MCP in Cursor There are two ways to configure MCP in Cursor: #### Project Configuration (Recommended) Create a `.cursor/mcp.json` file in your project root: ```json { "mcpServers": { "anysite": { "command": "npx", "args": ["-y", "@anysiteio/mcp"], "env": { "ANYSITE_API_KEY": "YOUR_API_KEY", "ANYSITE_ACCOUNT_ID": "" } } } } ``` **Steps:** 1. Open your project in Cursor 2. Create `.cursor` directory in project root (if it doesn't exist) 3. Create `mcp.json` file inside `.cursor` directory 4. Paste the configuration above 5. Replace `YOUR_API_KEY` with your actual API key 6. Restart Cursor or reload the window > Project-specific configuration is ideal for team collaboration. Add `.cursor/mcp.json` to `.gitignore` if your API key is included directly. #### Global Configuration Configure MCP globally for all Cursor projects: **For macOS:** Edit `~/.cursor/mcp.json`: **For Windows:** Edit `%USERPROFILE%\.cursor\mcp.json`: **For Linux:** Edit `~/.cursor/mcp.json`: ```json { "mcpServers": { "anysite": { "command": "npx", "args": ["-y", "@anysiteio/mcp"], "env": { "ANYSITE_API_KEY": "YOUR_API_KEY", "ANYSITE_ACCOUNT_ID": "" } } } } ``` > Global configuration makes Anysite tools available in all your Cursor projects without per-project setup. **Configuration breakdown:** - `command: "npx"` - Uses npx to run the MCP package - `args: ["-y", "@anysiteio/mcp"]` - Auto-confirms and runs the Anysite MCP package - `ANYSITE_API_KEY` - Your API key from the Anysite dashboard - `ANYSITE_ACCOUNT_ID` - Optional account ID (leave empty if not needed) ### Step 3: Using Environment Variables (Secure Method) For better security, use environment variables instead of hardcoding the API key: **Option 1: Shell Environment** Add to your shell profile (`~/.zshrc`, `~/.bashrc`): ```bash export ANYSITE_API_KEY="your_api_key_here" ``` Then update your `mcp.json`: ```json { "mcpServers": { "anysite": { "command": "npx", "args": ["-y", "@anysiteio/mcp"], "env": { "ANYSITE_API_KEY": "${ANYSITE_API_KEY}", "ANYSITE_ACCOUNT_ID": "" } } } } ``` **Option 2: .env File** Create a `.env` file in your project root: ```bash ANYSITE_API_KEY=your_api_key_here ``` > Always add `.env` to your `.gitignore` to prevent accidental commits of sensitive data. ### Step 4: Verify Installation After configuration, verify the MCP server is working: 1. **Restart Cursor** or reload the window (Cmd/Ctrl + Shift + P → "Reload Window") 2. **Open Cursor AI Chat** and ask: ``` What MCP tools do you have access to? ``` 3. **Test with a simple request:** ``` Get information about this LinkedIn profile: linkedin.com/in/username ``` > If everything is working correctly, Cursor AI will list the available Anysite tools and be able to execute data extraction requests. ## Managing Your Connection ### Update Configuration To update your API key or other settings: 1. Edit the `mcp.json` file 2. Save the changes 3. Restart Cursor or reload the window ### Remove MCP Server To remove the Anysite MCP integration: 1. Delete the `anysite` entry from your `mcp.json` file 2. Or delete the entire `mcp.json` file if not using other MCP servers 3. Restart Cursor ### Multiple MCP Servers You can configure multiple MCP servers in the same file: ```json { "mcpServers": { "anysite": { "command": "npx", "args": ["-y", "@anysiteio/mcp"], "env": { "ANYSITE_API_KEY": "YOUR_API_KEY", "ANYSITE_ACCOUNT_ID": "" } }, "other-server": { "command": "npx", "args": ["-y", "other-mcp-package"], "env": {} } } } ``` ## Troubleshooting #### MCP server not connecting **Solutions:** - Ensure Node.js and npm are installed and in your PATH - Verify the API key is valid and active - Check internet connectivity - Restart Cursor completely - Check the Cursor logs for error messages #### Tools not appearing in Cursor AI **Solutions:** - Reload the Cursor window (Cmd/Ctrl + Shift + P → "Reload Window") - Verify the `mcp.json` file syntax is correct (valid JSON) - Check that the file is in the correct location - Ensure your Anysite subscription is active #### NPX command not found **Solutions:** - Install Node.js from [nodejs.org](https://nodejs.org) - Ensure npm is in your system PATH - Try running `npx --version` in terminal to verify - On Windows, you may need to restart after Node.js installation #### Invalid JSON syntax error **Solutions:** - Validate your JSON at [jsonlint.com](https://jsonlint.com) - Check for missing commas, brackets, or quotes - Ensure no trailing commas after the last item in objects/arrays - Use a JSON formatter extension in your editor #### API key not working **Solutions:** - Verify the API key is correct (no extra spaces) - Check if your Anysite subscription is active - Try generating a new API key from the dashboard - Ensure the key has the necessary permissions #### Environment variables not loading **Solutions:** - Restart your terminal/shell after adding env vars - Start Cursor from the terminal: `cursor .` - On macOS, GUI apps may not inherit shell env vars - Try using the direct API key method to test ## Security Best Practices #### Environment Variables Store API keys in environment variables, never hardcode in configuration files #### Git Ignore Always add `.cursor/mcp.json` and `.env` to `.gitignore` #### Key Rotation Regularly regenerate API keys from Anysite dashboard #### Audit Access Review API usage periodically in your Anysite dashboard **.gitignore example:** ```gitignore # MCP configuration with API keys .cursor/mcp.json # Environment files .env .env.local .env.*.local ``` ## Comparison: Cursor vs Other Integrations | Feature | Cursor | Claude Code (CLI) | Claude Desktop | |---------|--------|-------------------|----------------| | **Interface** | IDE integrated | Command line | Desktop app | | **Setup** | JSON config | Terminal command | OAuth GUI | | **Best For** | AI-assisted coding | Developers, automation | General users | | **Project Scope** | Per-project config | Multiple scopes | Global only | | **Version Control** | `.cursor/mcp.json` | `.mcp.json` | Not applicable | ## Next Steps - [Explore Usage Examples](/docs/mcp-server/cursor-tool/examples) - [View All Available Tools](/docs/mcp-server/tools) - [Compare with Claude Code](/docs/mcp-server/claude-code-tool/installation) - [Try Claude Desktop](/docs/mcp-server/claude-desktop-tool/installation) ## Need Help? #### Get Support Contact our support team for assistance with Cursor MCP integration --- # Custom Endpoints ## Custom Endpoints in MCP > Custom endpoints created through the **Custom Endpoint Builder** are automatically available in the MCP Server — no server changes required. The Anysite MCP Server dynamically loads all endpoints from the OpenAPI specification at startup. This means any custom endpoint you create through the Custom Endpoint Builder instantly becomes available to all your AI agents. --- ## How It Works #### Create a custom endpoint Use the [Custom Endpoint Builder](https://app.anysite.io) to define your parser — specify the target URL, data extraction rules, and output schema. #### Endpoint appears in MCP The MCP Server dynamically loads it from the OpenAPI specification. No server restart or configuration changes needed. #### Discover and use Your AI agent can find the new endpoint via `discover()` and call it via `execute()`: ```text discover("your_source", "your_category") → Shows your custom endpoint with parameters execute("your_source", "your_category", "your_endpoint", {params}) → Fetches data using your custom parser ``` --- ## Features #### Zero Deployment Custom endpoints appear instantly in MCP — no code, no deployment, no server updates. #### Full MCP Support Same caching, pagination (`get_page`), analysis (`query_cache`), and export (`export_data`) as built-in endpoints. #### All Clients Works with Claude Desktop, Claude Code, Cursor, n8n, and any MCP-compatible client. #### Unlimited Plan Compatible Custom endpoints are included in the MCP Unlimited Plan — no additional costs. --- ## Example Suppose you've built a custom parser for a job board: ```text 1. discover("my_jobboard", "search") → Shows: endpoint "search_jobs" with params: query, location, salary_min 2. execute("my_jobboard", "search", "search_jobs", { query: "python developer", location: "Berlin", salary_min: 60000 }) → Returns job listings + cache_key 3. query_cache(cache_key, sort_by="salary", sort_order="desc", limit=10) → Top 10 highest-paying positions 4. export_data(cache_key, "csv") → Download all results as CSV ``` --- ## Getting Started #### Custom Endpoint Builder Create your first custom endpoint at app.anysite.io --- # Data Analysis (query_cache) ## Server-Side Data Analysis > `query_cache` is one of the most powerful features of the MCP Server — it allows you to **analyze data without consuming context window tokens**. ### The Problem When you search for 50 LinkedIn profiles, all 50 results are returned into the LLM's context. Filtering, sorting, or aggregating requires the LLM to process all data in-context — expensive and limited by context size. ### The Solution: ClickHouse-Backed Cache Every `execute()` call stores results in a ClickHouse cache (TTL: 7 days). The `query_cache` tool lets you query this cache server-side — only the filtered/aggregated results are returned to context. ```text execute("linkedin", "search", "search_users", {keywords: "CTO", count: 100}) → Returns first 10 items + cache_key → All 100 results stored in ClickHouse cache query_cache(cache_key, conditions=[{field: "followers", op: ">", value: 5000}]) → Returns only matching profiles (server-side filtering) → Context receives only the filtered subset, not all 100 ``` --- ## Filtering Use `conditions` to filter cached results by any field: ```json query_cache(cache_key, conditions=[ {"field": "location", "op": "contains", "value": "San Francisco"}, {"field": "followers", "op": ">", "value": 500} ]) ``` Multiple conditions are combined with AND logic. ### Supported Filter Operators | Operator | Description | Example | |----------|-------------|---------| | `=` | Exact match | `{"field": "country", "op": "=", "value": "US"}` | | `!=` | Not equal | `{"field": "status", "op": "!=", "value": "inactive"}` | | `>` | Greater than | `{"field": "followers", "op": ">", "value": 1000}` | | `<` | Less than | `{"field": "age", "op": "<", "value": 30}` | | `>=` | Greater or equal | `{"field": "score", "op": ">=", "value": 4.5}` | | `<=` | Less or equal | `{"field": "price", "op": "<=", "value": 100}` | | `contains` | Substring match | `{"field": "title", "op": "contains", "value": "Engineer"}` | | `not_contains` | Substring exclusion | `{"field": "bio", "op": "not_contains", "value": "retired"}` | --- ## Aggregation Calculate summary statistics without loading individual records: ```json query_cache(cache_key, aggregate={"field": "followers", "op": "avg"}) ``` ### Supported Aggregation Functions | Function | Description | Example | |----------|-------------|---------| | `count` | Count records | `{"op": "count"}` (field optional) | | `sum` | Sum values | `{"field": "likes", "op": "sum"}` | | `avg` | Average value | `{"field": "followers", "op": "avg"}` | | `min` | Minimum value | `{"field": "price", "op": "min"}` | | `max` | Maximum value | `{"field": "score", "op": "max"}` | | `uniq` | Count unique values | `{"field": "country", "op": "uniq"}` | --- ## Group By Combine aggregation with grouping to get breakdowns: ```json query_cache(cache_key, aggregate={"field": "followers", "op": "count"}, group_by="industry") ``` **Result:** ```json { "aggregate": { "groups": { "Technology": 45, "Finance": 23, "Healthcare": 12 }, "op": "count" }, "cache_key": "abc123..." } ``` --- ## Sorting Sort cached results by any field: ```json query_cache(cache_key, sort_by="followers", sort_order="desc", limit=10) ``` Returns only the top 10 results — the rest stay in cache, not in context. --- ## Combined Example A full workflow combining all features: ```text 1. execute("linkedin", "search", "search_users", {keywords: "VP Engineering", count: 200}) → 200 profiles cached, first 10 returned + cache_key 2. query_cache(cache_key, conditions=[ {field: "location", op: "contains", value: "Bay Area"}, {field: "followers", op: ">", value: 500} ]) → Filter to Bay Area VPs with 500+ followers 3. query_cache(cache_key, aggregate={field: "followers", op: "avg"}, group_by="company") → Average follower count by company (across all 200 profiles, not just the Bay Area subset) 4. query_cache(cache_key, sort_by="followers", sort_order="desc", limit=5) → Top 5 most-followed VPs (from all 200 profiles) 5. export_data(cache_key, "csv") → Download all 200 profiles as CSV file ``` > **Key benefit**: Step 1 makes a single API call to collect data. Steps 2-5 are cache operations at zero additional API cost — they don't load all 200 profiles into context. Only the filtered/aggregated results are returned to the LLM. --- ## Export Data Download full cached datasets as files: ```json export_data(cache_key, "csv") ``` > `export_data` always exports the **full dataset** stored under the `cache_key`, regardless of any filters applied via `query_cache`. Filters only affect what is returned to context — they do not modify the cached data. ### Supported Formats | Format | Description | |--------|-------------| | `json` | JSON array | | `csv` | Comma-separated values | | `jsonl` | JSON Lines (one record per line) | Returns a download URL. Data stays cached for 7 days. --- ## Best Practices #### Use Large Counts Fetch more data with `execute()` (count: 100-200), then filter with `query_cache`. Cheaper than multiple small requests. #### Filter Before Reading Always use `query_cache` to narrow results before loading them into context. Saves tokens and improves response quality. #### Aggregate Server-Side Use aggregation functions instead of asking the LLM to calculate averages, counts, or sums from raw data. #### Export for External Use Use `export_data` when you need the full dataset outside of the AI conversation (spreadsheets, databases, reports). --- # MCP Server Configuration ## Overview The Anysite MCP Server requires proper configuration to connect with your API credentials and customize tool behavior. This guide covers all configuration options available. ## Configuration File The MCP server uses a JSON configuration file that should be placed in your project directory or specified via environment variables. ### Basic Configuration Create a `hdw-config.json` file with the following structure: ```json { "apiKey": "your-hdw-api-key", "baseUrl": "https://api.anysite.io", "defaultTimeout": 30000, "retryAttempts": 3, "enableLogging": true, "logLevel": "info" } ``` ### Configuration Options Your Anysite API access token. Get this from your [dashboard](https://app.anysite.io/register). The base URL for the Anysite API. Usually you don't need to change this. Default timeout in milliseconds for API requests. Number of retry attempts for failed API requests. Enable or disable logging output. Log level: `debug`, `info`, `warn`, `error`. ## Environment Variables Alternatively, you can configure the MCP server using environment variables: ```bash export HDW_API_KEY="your-hdw-api-key" export HDW_BASE_URL="https://api.anysite.io" export HDW_TIMEOUT="30000" export HDW_RETRY_ATTEMPTS="3" export HDW_LOG_LEVEL="info" ``` > Environment variables take precedence over configuration file settings. ## Tool-Specific Configuration ### LinkedIn Tools Configuration Configure LinkedIn-specific settings: ```json { "tools": { "linkedin": { "maxResults": 50, "includePrivateProfiles": false, "searchDepth": "standard" } } } ``` ### Instagram Tools Configuration Configure Instagram-specific settings: ```json { "tools": { "instagram": { "maxPosts": 100, "includeStories": false, "mediaQuality": "standard" } } } ``` ### Rate Limiting Configuration Configure rate limiting to stay within API limits: ```json { "rateLimiting": { "enabled": true, "requestsPerMinute": 60, "burstLimit": 10 } } ``` ## Claude Desktop Integration To use the MCP server with Claude Desktop, add this configuration to your Claude config file: ### macOS Edit `~/Library/Application Support/Claude/claude_desktop_config.json`: ```json { "mcpServers": { "hdw": { "command": "node", "args": ["/path/to/hdw-mcp-server/dist/index.js"], "env": { "HDW_API_KEY": "your-hdw-api-key" } } } } ``` ### Windows Edit `%APPDATA%\Claude\claude_desktop_config.json`: ```json { "mcpServers": { "hdw": { "command": "node", "args": ["C:\\path\\to\\hdw-mcp-server\\dist\\index.js"], "env": { "HDW_API_KEY": "your-hdw-api-key" } } } } ``` ## Cursor Integration For Cursor IDE integration, add the MCP server to your workspace settings: ```json { "mcp.servers": { "hdw": { "command": "node", "args": ["./node_modules/@horizondatawave/mcp-server/dist/index.js"], "env": { "HDW_API_KEY": "your-hdw-api-key" } } } } ``` ## Validation Test your configuration by running the MCP server in debug mode: ```bash node dist/index.js --debug --config ./hdw-config.json ``` You should see output similar to: ``` [INFO] Anysite MCP Server starting... [INFO] Configuration loaded successfully [INFO] API connection verified [INFO] 20+ tools registered [INFO] MCP Server ready on stdio ``` ## Troubleshooting ### Common Issues #### Invalid API Key Error - Verify your API key is correct and active - Check that the key has proper permissions - Ensure the key isn't expired #### Connection Timeout - Check your internet connection - Verify the base URL is correct - Try increasing the timeout value #### Rate Limit Errors - Enable rate limiting in configuration - Reduce requests per minute - Check your API plan limits ### Debug Mode Enable debug logging for troubleshooting: ```json { "logLevel": "debug", "enableLogging": true } ``` This will provide detailed information about API requests, responses, and internal operations. ## Next Steps - [Explore Available Tools](/docs/mcp-server/tools) - Learn about all 20+ available tools - [View Examples](/docs/mcp-server/local-server/examples) - See practical usage examples - [Integration Guide](/docs/mcp-server/local-server/installation) - Complete installation guide --- # MCP Server Examples ## Overview This page provides practical examples of using the Anysite MCP Server with various AI tools and IDEs. Each example demonstrates real-world use cases and expected outputs. ## Claude Desktop Examples ### LinkedIn Lead Generation **Prompt:** > Find marketing managers at tech companies in San Francisco, get their profiles and recent posts **MCP Server Response:** The server will use multiple tools to fulfill this request: 1. **linkedin_search_users** - Find marketing managers in SF tech companies 2. **linkedin_user_profile** - Get detailed profiles for each person 3. **linkedin_user_posts** - Retrieve recent posts and activity **Expected Output:** ``` Found 15 marketing managers at tech companies in San Francisco: 1. Sarah Chen - Senior Marketing Manager at Stripe - 8+ years experience in B2B SaaS marketing - Recent post: "The future of payment technology in 2024" - Profile: https://linkedin.com/in/sarahchen-marketing 2. Michael Rodriguez - VP Marketing at Airbnb - Expert in growth marketing and user acquisition - Recent post: "Building community-driven marketing campaigns" - Profile: https://linkedin.com/in/mrodriguez-growth [... additional results ...] ``` ### Competitive Analysis **Prompt:** > Analyze what our competitors are posting on LinkedIn and Instagram this week **MCP Server Response:** ``` Competitive Analysis - Week of [Date] LinkedIn Activity: • Competitor A (TechCorp): 12 posts, avg 240 engagements - Top post: "AI transformation in enterprise" (450 likes) - Content themes: Product updates (40%), Thought leadership (60%) • Competitor B (DataFlow): 8 posts, avg 180 engagements - Top post: "New partnership announcement" (320 likes) - Content themes: Partnerships (50%), Case studies (50%) Instagram Activity: • Competitor A: 6 posts, avg 890 likes - Behind-the-scenes content performing well - Story highlights: Product demos, Team culture • Competitor B: 4 posts, avg 650 likes - Customer success stories driving engagement - Heavy use of carousel posts ``` ## Cursor IDE Examples ### Code Documentation Enhancement **Prompt:** > Research how similar APIs handle rate limiting and suggest improvements for our documentation **MCP Server Response:** The MCP server will search for rate limiting best practices and analyze competitor APIs: ```typescript // Suggested improvements based on research: interface RateLimitConfig { // Standard headers (found in 85% of APIs researched) headers: { 'X-RateLimit-Limit': number; 'X-RateLimit-Remaining': number; 'X-RateLimit-Reset': number; 'X-RateLimit-Window': string; // e.g., "1hour", "15min" }; // Progressive backoff (used by Stripe, GitHub, Twitter) backoffStrategy: { initial: number; // 1000ms multiplier: number; // 2.0 maximum: number; // 30000ms }; // Burst allowance (found in LinkedIn, Reddit APIs) burst: { enabled: boolean; limit: number; window: string; }; } ``` ### Market Research Automation **Prompt:** > Find recent discussions about AI coding assistants on Reddit and Twitter **MCP Server Response:** ``` AI Coding Assistant Discussions - Last 7 Days Reddit Analysis: • r/programming (234 mentions) - Top thread: "GitHub Copilot vs ChatGPT for coding" (1.2k upvotes) - Sentiment: 60% positive, 25% neutral, 15% negative - Key concerns: Code quality, learning impact, pricing • r/MachineLearning (89 mentions) - Focus on code generation models - Discussion about fine-tuning for specific languages Twitter Analysis: • 1,247 tweets mentioning "AI coding assistant" • Top influencers: @programmer_dev, @ml_engineer, @tech_lead • Trending topics: #CodeGeneration, #DeveloperProductivity • Sentiment trend: Increasingly positive over the week ``` ## Integration Examples ### Automated Content Pipeline Create an automated pipeline for content creation: ```python Python Script import asyncio from hdw_mcp_client import HDWMCPClient async def create_content_pipeline(): client = HDWMCPClient() # Step 1: Research trending topics reddit_trends = await client.reddit_search_posts({ "query": "artificial intelligence", "subreddit": "technology", "sort": "hot", "limit": 10 }) # Step 2: Find thought leaders discussing these topics linkedin_leaders = await client.linkedin_search_users({ "query": "AI executive OR AI researcher", "filters": {"industry": "Technology"}, "limit": 20 }) # Step 3: Analyze their recent content content_analysis = [] for leader in linkedin_leaders: posts = await client.linkedin_user_posts({ "user_id": leader["id"], "limit": 5 }) content_analysis.append({ "leader": leader["name"], "posts": posts, "engagement": sum(p["reactions"] for p in posts) }) return { "trending_topics": reddit_trends, "thought_leaders": content_analysis, "content_opportunities": analyze_gaps(reddit_trends, content_analysis) } # Run the pipeline results = asyncio.run(create_content_pipeline()) ``` ```javascript Node.js const { HDWMCPClient } = require('@horizondatawave/mcp-client'); async function socialMediaMonitoring() { const client = new HDWMCPClient({ apiKey: process.env.HDW_API_KEY }); // Monitor brand mentions across platforms const [linkedinMentions, twitterMentions, redditMentions] = await Promise.all([ client.linkedinSearchPosts({ query: "YourBrandName OR @YourHandle", limit: 50 }), client.twitterSearchPosts({ query: "YourBrandName OR @YourHandle", resultType: "recent", limit: 100 }), client.redditSearchPosts({ query: "YourBrandName", sort: "new", limit: 25 }) ]); // Analyze sentiment and engagement const analysis = { totalMentions: linkedinMentions.length + twitterMentions.length + redditMentions.length, platforms: { linkedin: { count: linkedinMentions.length, avgEngagement: calculateEngagement(linkedinMentions) }, twitter: { count: twitterMentions.length, avgEngagement: calculateEngagement(twitterMentions) }, reddit: { count: redditMentions.length, avgEngagement: calculateEngagement(redditMentions) } }, topMentions: getTopMentions([...linkedinMentions, ...twitterMentions, ...redditMentions]) }; return analysis; } ``` ### Lead Qualification Workflow Automate lead research and qualification: ```bash CLI Usage # Research a potential client hdw-mcp research-company "Acme Corp" \ --include-employees \ --include-recent-posts \ --include-company-updates \ --output leads/acme-corp-research.json # Find decision makers hdw-mcp find-decision-makers "Acme Corp" \ --roles "CTO,VP Engineering,Head of Product" \ --seniority senior \ --location "San Francisco Bay Area" # Analyze their content for warm intro opportunities hdw-mcp analyze-content leads/acme-corp-research.json \ --find-connection-opportunities \ --suggest-conversation-starters ``` ## Advanced Use Cases ### Recruitment Pipeline **Scenario:** Find and research potential job candidates #### Claude Conversation ``` User: Find senior Python developers in NYC who are posting about machine learning MCP Server: I'll search for senior Python developers in NYC with ML interests... Found 25 qualified candidates: 1. Alex Thompson - Senior ML Engineer at Meta • 6+ years Python, specializes in NLP • Recent post: "Building production ML pipelines with FastAPI" • Open to opportunities (LinkedIn status: #OpenToWork) 2. Maria Gonzalez - Principal Data Scientist at Spotify • Expert in recommendation systems • Recent post: "Why feature stores are game-changers" • Active in ML community, speaks at conferences [Additional candidates...] Would you like me to: • Get detailed profiles for any specific candidates? • Find their contact information? • Analyze their skill overlap with your job requirements? ``` #### Automated Script ```python # recruitment_pipeline.py async def find_candidates(job_requirements): # Search across multiple platforms candidates = [] # LinkedIn search linkedin_candidates = await client.linkedin_search_users({ "query": f"{job_requirements.skills} {job_requirements.location}", "filters": { "current_company": "exclude_competitors", "experience_level": job_requirements.seniority } }) # GitHub activity analysis for candidate in linkedin_candidates: if candidate.get("github_username"): github_activity = await client.github_user_activity( candidate["github_username"] ) candidate["github_score"] = score_github_activity(github_activity) return rank_candidates(linkedin_candidates, job_requirements) ``` ### Market Intelligence Dashboard Create a comprehensive market intelligence system: ```json { "dashboardConfig": { "updateFrequency": "daily", "sources": [ "linkedin_company_updates", "twitter_competitor_mentions", "reddit_industry_discussions", "google_news_alerts" ], "competitors": [ "Competitor A", "Competitor B", "Competitor C" ], "keywords": [ "market trends", "product launches", "funding news", "partnership announcements" ] } } ``` ## Error Handling Examples ### Robust Request Handling ```typescript async function robustApiCall(toolName: string, params: any) { const maxRetries = 3; let attempt = 0; while (attempt < maxRetries) { try { const result = await mcpServer.call(toolName, params); return result; } catch (error) { attempt++; if (error.code === 'RATE_LIMIT_EXCEEDED') { // Wait and retry const waitTime = Math.pow(2, attempt) * 1000; // Exponential backoff await new Promise(resolve => setTimeout(resolve, waitTime)); continue; } if (error.code === 'INVALID_CREDENTIALS') { throw new Error('API credentials need to be updated'); } if (attempt === maxRetries) { throw error; } } } } ``` ## Performance Tips ### Batch Operations Instead of individual calls, use batch operations when possible: ```javascript // ❌ Inefficient - Multiple individual calls for (const user of users) { const profile = await client.linkedinUserProfile({ userId: user.id }); profiles.push(profile); } // ✅ Efficient - Batch operation const profiles = await client.linkedinBatchUserProfiles({ userIds: users.map(u => u.id), batchSize: 10 }); ``` ### Caching Strategy ```javascript const cache = new Map(); const CACHE_TTL = 3600000; // 1 hour async function cachedApiCall(toolName, params) { const cacheKey = `${toolName}:${JSON.stringify(params)}`; const cached = cache.get(cacheKey); if (cached && Date.now() - cached.timestamp < CACHE_TTL) { return cached.data; } const result = await mcpServer.call(toolName, params); cache.set(cacheKey, { data: result, timestamp: Date.now() }); return result; } ``` ## Next Steps - [Installation Guide](/docs/mcp-server/local-server/installation) - Get started with the MCP server - [Available Tools](/docs/mcp-server/tools) - Explore all 20+ available tools - [Configuration](/docs/mcp-server/local-server/configuration) - Detailed configuration options --- # MCP Server Installation ## Overview The Anysite MCP (Model Context Protocol) Server provides AI tools with direct access to LinkedIn, Instagram, Reddit, and other social media data extraction capabilities. ## Prerequisites - Python 3.8 or higher - Anysite API account and credentials - Compatible AI client (Claude Desktop, Cursor, Windsurf) ## Installation #### Clone Repository ```bash git clone https://github.com/horizondatawave/hdw-mcp-server.git cd hdw-mcp-server ``` #### Get API Credentials 1. Visit [anysite.io](https://app.anysite.io/register) 2. Create your account and log in 3. Navigate to account settings 4. Generate your API credentials: - `HDW_ACCESS_TOKEN`: Your API access token - `HDW_ACCOUNT_ID`: Your account identifier (optional) #### Configure Environment Create a `.env` file or set environment variables: ```bash export HDW_ACCESS_TOKEN="your_access_token_here" export HDW_ACCOUNT_ID="your_account_id_here" ``` ## Client Configuration ### Claude Desktop Add this configuration to your Claude Desktop config file: #### macOS Edit `~/Library/Application Support/Claude/claude_desktop_config.json`: ```json { "mcpServers": { "hdw-mcp-server": { "command": "python", "args": ["/path/to/hdw-mcp-server/main.py"], "env": { "HDW_ACCESS_TOKEN": "your_access_token_here", "HDW_ACCOUNT_ID": "your_account_id_here" } } } } ``` #### Windows Edit `%APPDATA%\Claude\claude_desktop_config.json`: ```json { "mcpServers": { "hdw-mcp-server": { "command": "python", "args": ["C:\\path\\to\\hdw-mcp-server\\main.py"], "env": { "HDW_ACCESS_TOKEN": "your_access_token_here", "HDW_ACCOUNT_ID": "your_account_id_here" } } } } ``` ### Cursor Add to your Cursor settings: ```json { "mcp.servers": { "hdw-mcp-server": { "command": "python", "args": ["/path/to/hdw-mcp-server/main.py"], "env": { "HDW_ACCESS_TOKEN": "your_access_token_here", "HDW_ACCOUNT_ID": "your_account_id_here" } } } } ``` ### Windsurf Configure in your Windsurf settings: ```json { "mcpServers": { "hdw-mcp-server": { "command": "python", "args": ["/path/to/hdw-mcp-server/main.py"], "env": { "HDW_ACCESS_TOKEN": "your_access_token_here", "HDW_ACCOUNT_ID": "your_account_id_here" } } } } ``` ## Verification After installation, restart your AI client and verify the MCP server is working: 1. Open a new conversation in your AI client 2. Ask: "What MCP tools do you have available?" 3. You should see Anysite tools listed > Make sure to replace `/path/to/hdw-mcp-server/` with the actual path where you cloned the repository. ## Troubleshooting #### MCP server not appearing in AI client - Check that the file path in your configuration is correct - Verify that Python is accessible from the command line - Ensure your credentials are properly set in the environment variables - Restart your AI client after making configuration changes #### Authentication errors - Verify your `HDW_ACCESS_TOKEN` and `HDW_ACCOUNT_ID` are correct - Check that your Anysite account is active - Ensure you have API access permissions #### Python path issues - Use the full path to your Python executable - If using a virtual environment, use the Python path from that environment - On Windows, use forward slashes or double backslashes in paths ## Next Steps - [Configure the MCP Server](/docs/mcp-server/local-server/configuration) - [Explore Available Tools](/docs/mcp-server/tools) - [View Usage Examples](/docs/mcp-server/local-server/examples) --- # Skill & Prompt Migration (v1 → v2) ## Overview MCP v2 replaces **70+ individual tools** with **5 universal meta-tools**. Any skill, prompt, or agent instruction that references old tool names must be updated. **What changed:** | v1 (old) | v2 (new) | |----------|----------| | `search_linkedin_users(keywords, location)` | `execute("linkedin", "search", "search_users", {"keywords": ..., "location": ...})` | | 70+ tool definitions in context | 5 compact meta-tools | | No caching | Built-in cache with `query_cache` and `export_data` | | No server-side filtering | Server-side filtering, aggregation, grouping | --- ## Tool Mapping ### LinkedIn | Old tool | New call | |----------|----------| | `search_linkedin_users(keywords, location, count)` | `execute("linkedin", "search", "search_users", {"keywords": ..., "location": ..., "count": ...})` | | `get_linkedin_profile(user)` | `execute("linkedin", "user", "get", {"user": ...})` | | `get_linkedin_company(company)` | `execute("linkedin", "company", "get", {"company": ...})` | | `search_linkedin_companies(keywords, count)` | `execute("linkedin", "search", "search_companies", {"keywords": ..., "count": ...})` | | `search_linkedin_jobs(keywords, location, count)` | `execute("linkedin", "job_search", "search_jobs", {"keywords": ..., "count": ...})` | | `search_linkedin_posts(keywords, count)` | `execute("linkedin", "post", "search_posts", {"keywords": ..., "count": ...})` | | `get_linkedin_user_posts(user)` | `execute("linkedin", "post", "get_user_posts", {"user": ...})` | | `find_linkedin_email(user)` | `execute("linkedin", "email", "find", {"user": ...})` | | `google_linkedin_search(query, count)` | `execute("linkedin", "google", "search", {"query": ..., "count": ...})` | ### Twitter/X | Old tool | New call | |----------|----------| | `search_twitter_users(query)` | `execute("twitter", "search", "search_users", {"query": ...})` | | `get_twitter_user(username)` | `execute("twitter", "user", "get", {"username": ...})` | | `get_twitter_user_tweets(username)` | `execute("twitter", "user_tweets", "get", {"username": ...})` | ### Instagram | Old tool | New call | |----------|----------| | `search_instagram_users(query)` | `execute("instagram", "search", "search_users", {"query": ...})` | | `get_instagram_user(username)` | `execute("instagram", "user", "get", {"username": ...})` | | `get_instagram_post(url)` | `execute("instagram", "post", "get", {"url": ...})` | ### YouTube | Old tool | New call | |----------|----------| | `search_youtube(query, count)` | `execute("youtube", "search", "search_videos", {"query": ..., "count": ...})` | | `get_youtube_channel(channel_id)` | `execute("youtube", "channel", "get", {"channel_id": ...})` | | `get_youtube_video(video_id)` | `execute("youtube", "video", "get", {"video_id": ...})` | ### Reddit | Old tool | New call | |----------|----------| | `search_reddit(query)` | `execute("reddit", "search", "search", {"query": ...})` | | `get_reddit_user(username)` | `execute("reddit", "user", "get", {"username": ...})` | | `get_reddit_posts(subreddit)` | `execute("reddit", "posts", "get", {"subreddit": ...})` | ### YC / SEC / Web | Old tool | New call | |----------|----------| | `search_yc_companies(query)` | `execute("yc", "search", "search", {"query": ...})` | | `get_yc_company(slug)` | `execute("yc", "company", "get", {"slug": ...})` | | `search_sec_filings(query)` | `execute("sec", "search", "search", {"query": ...})` | | `get_sec_document(url)` | `execute("sec", "document", "get", {"url": ...})` | | `scrape_webpage(url)` | `execute("webparser", "parse", "parse", {"url": ...})` | > If an old tool name is not in the mapping above, use `discover(source, category)` to find the correct endpoint name, then call `execute()`. --- ## Migration Rules ### 1. Direct tool references → execute() **Before:** ``` Use search_linkedin_users to find people matching the criteria. ``` **After:** ``` Use execute("linkedin", "search", "search_users", {params}) to find people matching the criteria. ``` ### 2. Unknown endpoint/params → add discover() first **Before:** ``` Search for the company on LinkedIn and get their details. ``` **After:** ``` Use discover("linkedin", "company") to check available endpoints and params. Then use execute("linkedin", "company", "get", {params}) to get company details. ``` ### 3. Known endpoint — skip discover() `discover()` is only needed when the skill doesn't know the exact endpoint name or parameter format. If the skill hardcodes specific `execute()` calls, discover is not required. ### 4. Multi-step workflows **Before:** ``` 1. Use search_linkedin_users to find the person 2. Use get_linkedin_profile to get their full profile 3. Use find_linkedin_email to get their email ``` **After:** ``` 1. Use execute("linkedin", "search", "search_users", {"first_name": ..., "last_name": ..., "count": 5}) to find the person 2. Use execute("linkedin", "user", "get", {"user": "{alias from step 1}"}) to get their full profile 3. Use execute("linkedin", "email", "find", {"user": "{alias from step 1}"}) to get their email ``` ### 5. New capabilities — pagination, filtering, export v2 adds cache-based tools that didn't exist in v1. Update skills to take advantage: #### Pagination (new) Results from `execute()` include `cache_key`. If more data exists: ``` get_page(cache_key="{cache_key}", offset=10, limit=10) ``` #### Server-side filtering (new) Filter results without consuming context tokens: ``` query_cache(cache_key="{cache_key}", conditions=[ {"field": "location", "op": "contains", "value": "San Francisco"} ]) ``` #### Aggregation (new) Calculate statistics server-side: ``` query_cache(cache_key="{cache_key}", aggregate={"field": "followers", "op": "avg"}, group_by="industry") ``` #### Export to file (new) Download full datasets: ``` export_data(cache_key="{cache_key}", output_format="csv") → returns download URL ``` ### 6. Error handling **Before:** ``` If search_linkedin_users returns an error, try with different keywords. ``` **After:** ``` If execute() returns an error with "llm_hint", follow the hint. If execute() returns {"error": "Source not found", "available_sources": [...]}, check source name. If execute() returns {"error": "Endpoint not found", "available_endpoints": [...]}, call discover() to get correct endpoint names. ``` --- ## Migration Checklist #### Replace tool calls - Replace all `search_linkedin_*`, `get_linkedin_*` → `execute("linkedin", ...)` - Replace all `search_twitter_*`, `get_twitter_*` → `execute("twitter", ...)` - Replace all `search_instagram_*`, `get_instagram_*` → `execute("instagram", ...)` - Replace all `search_youtube_*`, `get_youtube_*` → `execute("youtube", ...)` - Replace all `search_reddit_*`, `get_reddit_*` → `execute("reddit", ...)` - Replace all `search_yc_*`, `get_yc_*` → `execute("yc", ...)` - Replace all `search_sec_*`, `get_sec_*` → `execute("sec", ...)` - Replace all `scrape_webpage` → `execute("webparser", "parse", ...)` #### Add new capabilities - Add `get_page` for large result sets - Add `query_cache` for filtering/aggregation - Add `export_data` for file downloads #### Add discover() where needed Only where endpoint names or params are not known in advance #### Clean up - Remove references to disabled sources (e.g., Crunchbase) - Update error handling to v2 format #### Test Test each migrated skill end-to-end --- ## Automated Migration ### With Claude Code Skill Instead of migrating manually, use the dedicated **anysite-mcp-migration** skill for Claude Code: **Install via Claude Code:** ```bash # Add the skills marketplace /plugin marketplace add https://github.com/anysiteio/agent-skills # Install the migration skill /plugin install anysite-mcp-migration@anysite-skills ``` **Quick preview of all available skills:** ```bash npx @anysiteio/agent-skills ``` **Usage** — ask Claude Code in natural language: - *"Migrate the skill at /path/to/SKILL.md to v2"* - *"Migrate this prompt to the new anysite MCP"* (paste old prompt) - *"What v1 tools are still in this skill?"* (paste text) The skill automatically: 1. Scans for all v1 tool references 2. Replaces with correct `execute()` calls 3. Adds `discover()` only where needed 4. Adds `get_page`, `query_cache`, `export_data` where beneficial 5. Removes disabled source references 6. Updates error handling 7. Outputs a migration summary --- ### With Any LLM (Auto-Migration Prompt) Copy the prompt below and paste it along with your old skill text into any LLM: #### Auto-Migration Prompt (click to expand) ``` You are migrating an Anysite MCP skill from v1 (individual tools) to v2 (meta-tools). RULES: 1. Replace every old tool call with execute(source, category, endpoint, params). 2. Only add discover() if the skill text says "check what's available" or doesn't specify exact endpoint/params. If the skill already knows exactly what to call — use execute() directly, no discover needed. 3. Add get_page/query_cache/export_data where the skill would benefit from pagination, filtering, or file export. 4. Keep the same logical flow — don't change what the skill does, only how it calls tools. 5. Remove references to Crunchbase (disabled source). TOOL MAPPING: - search_linkedin_users(...) → execute("linkedin", "search", "search_users", {...}) - get_linkedin_profile(user=X) → execute("linkedin", "user", "get", {"user": X}) - get_linkedin_company(company=X) → execute("linkedin", "company", "get", {"company": X}) - search_linkedin_companies(...) → execute("linkedin", "search", "search_companies", {...}) - search_linkedin_jobs(...) → execute("linkedin", "job_search", "search_jobs", {...}) - search_linkedin_posts(...) → execute("linkedin", "post", "search_posts", {...}) - get_linkedin_user_posts(user=X) → execute("linkedin", "post", "get_user_posts", {"user": X}) - find_linkedin_email(user=X) → execute("linkedin", "email", "find", {"user": X}) - google_linkedin_search(query=X) → execute("linkedin", "google", "search", {"query": X}) - search_twitter_users(query=X) → execute("twitter", "search", "search_users", {"query": X}) - get_twitter_user(username=X) → execute("twitter", "user", "get", {"username": X}) - get_twitter_user_tweets(username=X) → execute("twitter", "user_tweets", "get", {"username": X}) - search_instagram_users(query=X) → execute("instagram", "search", "search_users", {"query": X}) - get_instagram_user(username=X) → execute("instagram", "user", "get", {"username": X}) - search_youtube(query=X) → execute("youtube", "search", "search_videos", {"query": X}) - get_youtube_channel(channel_id=X) → execute("youtube", "channel", "get", {"channel_id": X}) - search_reddit(query=X) → execute("reddit", "search", "search", {"query": X}) - get_reddit_user(username=X) → execute("reddit", "user", "get", {"username": X}) - search_yc_companies(query=X) → execute("yc", "search", "search", {"query": X}) - get_yc_company(slug=X) → execute("yc", "company", "get", {"slug": X}) - search_sec_filings(query=X) → execute("sec", "search", "search", {"query": X}) - scrape_webpage(url=X) → execute("webparser", "parse", "parse", {"url": X}) NEW CAPABILITIES (add where useful): - get_page(cache_key, offset, limit) — paginate large results - query_cache(cache_key, conditions, sort_by, aggregate, group_by) — filter/sort/aggregate server-side - export_data(cache_key, output_format) — download as json/csv/jsonl If an old tool name is not in the mapping above, use discover(source, category) to find the correct endpoint, then execute(). Now migrate the following skill: ``` --- # n8n MCP Tool Examples ## Overview These examples demonstrate how to use the Anysite MCP Tool in n8n workflows to extract and process social media data. ## Example 1: LinkedIn Profile Enrichment Automatically enrich contact data with LinkedIn profile information. ### Workflow Structure ```mermaid graph LR A[Webhook Trigger] --> B[MCP Client] B --> C[AI Agent] C --> D[Process Data] D --> E[Store in Database] ``` ### Configuration #### Setup Webhook Trigger Configure a webhook that accepts LinkedIn profile URLs: ```json { "linkedin_url": "https://linkedin.com/in/username" } ``` #### Configure MCP Client - Add MCP Client node - Set endpoint to your Anysite Direct URL - Include `linkedin_user` tool #### Add AI Agent Node Configure the AI agent to use the MCP tool: ``` Extract detailed profile information from: {{ $json.linkedin_url }} Use the linkedin_user tool to get: - Full name and headline - Current position and company - Experience history - Education - Skills ``` #### Process Results Use a Code node to structure the extracted data: ```javascript const profile = $input.item.json; return { name: profile.full_name, headline: profile.headline, current_company: profile.current_position?.company, location: profile.location, skills: profile.skills, profile_url: profile.linkedin_url }; ``` ### Use Cases - CRM data enrichment - Lead qualification - Candidate screening - Contact database updates --- ## Example 2: Reddit Content Monitoring Monitor Reddit posts and extract detailed information for content analysis. ### Workflow Structure ```mermaid graph LR A[Schedule Trigger] --> B[Reddit URLs] B --> C[MCP Client] C --> D[AI Agent] D --> E[Sentiment Analysis] E --> F[Send Alert] ``` ### Configuration #### Setup Schedule Trigger Run every hour to check new Reddit posts: ``` Cron: 0 * * * * ``` #### Provide Reddit URLs Use a Set node with target post URLs or feed from a database. #### Configure MCP Client - Include `reddit_post` tool - Set for processing multiple items #### Extract Post Data AI agent prompt: ``` Analyze this Reddit post: {{ $json.reddit_url }} Extract: - Post title and content - Author information - Upvotes and comments count - Top comments - Post timestamp ``` #### Analyze Sentiment Add another AI node to analyze sentiment: ``` Analyze the sentiment of this post and its top comments. Classify as: Positive, Negative, or Neutral Extract key topics and themes. ``` ### Use Cases - Brand mention monitoring - Community sentiment tracking - Competitor analysis - Trend identification --- ## Example 3: Instagram Profile Analysis Extract and compare Instagram profiles for influencer research. ### Workflow Configuration #### Input Instagram URLs Webhook or manual trigger with profile URLs: ```json { "profiles": [ "https://instagram.com/influencer1", "https://instagram.com/influencer2" ] } ``` #### MCP Client Setup - Include `instagram_profile` tool - Enable batch processing #### Extract Profile Data AI agent instruction: ``` For each Instagram profile, extract: - Username and full name - Follower count and engagement rate - Bio and contact information - Recent posts count - Account type (business/personal) ``` #### Compare and Rank Use Code node to compare profiles: ```javascript const profiles = $input.all().map(item => item.json); // Calculate engagement scores profiles.forEach(profile => { profile.engagement_score = (profile.avg_likes + profile.avg_comments) / profile.followers * 100; }); // Sort by engagement profiles.sort((a, b) => b.engagement_score - a.engagement_score ); return profiles; ``` ### Use Cases - Influencer selection - Campaign planning - Competitive analysis - Audience research --- ## Example 4: Multi-Platform Data Aggregation Collect data from multiple social platforms for comprehensive analysis. ### Workflow Overview Combine LinkedIn, Instagram, and Reddit data for a person or brand. #### Setup Input Provide multiple social media URLs: ```json { "linkedin": "https://linkedin.com/in/username", "instagram": "https://instagram.com/username", "reddit": "https://reddit.com/user/username" } ``` #### Parallel Processing Split workflow into parallel branches: - Branch 1: LinkedIn data extraction - Branch 2: Instagram data extraction - Branch 3: Reddit data extraction Each branch uses MCP Client with appropriate tool. #### Merge Results Use Merge node to combine all data: ``` Mode: Combine All Output: Single item with all social data ``` #### Generate Report AI agent creates unified analysis: ``` Based on the social media data from LinkedIn, Instagram, and Reddit: 1. Summarize professional background 2. Analyze content themes and interests 3. Evaluate audience engagement 4. Identify key insights and patterns ``` ### Use Cases - Comprehensive background checks - Brand presence analysis - Content strategy research - Cross-platform insights --- ## Example 5: Automated LinkedIn Company Research Research companies automatically from a list. ### Configuration #### Input Company List Provide company LinkedIn URLs via webhook or spreadsheet: ```json { "companies": [ "https://linkedin.com/company/company1", "https://linkedin.com/company/company2" ] } ``` #### MCP Client Use `linkedin_company` tool for data extraction. #### Extract Company Data ``` For each company, extract: - Company name and industry - Size and location - Description and specialties - Employee count - Recent updates and posts ``` #### Export Results Format and export to: - Google Sheets - Airtable - CSV file - Database ### Use Cases - Market research - Lead generation - Competitive intelligence - Partnership opportunities --- ## Best Practices #### Error Handling Add Error Trigger nodes to handle API failures gracefully and implement retry logic. #### Rate Limiting Use Wait nodes between MCP calls to avoid hitting API rate limits. #### Data Validation Validate extracted data before processing to ensure quality and completeness. #### Logging Log all MCP operations for debugging and audit purposes. ## Tips for Optimization 1. **Batch Processing**: Group multiple URLs together to reduce workflow execution time 2. **Caching**: Store frequently accessed data to minimize API calls 3. **Parallel Execution**: Use Split In Batches node for processing large datasets 4. **Error Recovery**: Implement fallback mechanisms for failed API calls 5. **Monitoring**: Set up notifications for workflow failures or data anomalies ## Advanced Patterns ### Pattern 1: Conditional Tool Selection Use IF nodes to dynamically select which MCP tool to use based on URL type: ```javascript // Detect platform from URL const url = $json.social_url; if (url.includes('linkedin.com/in/')) { return { tool: 'linkedin_user' }; } else if (url.includes('linkedin.com/company/')) { return { tool: 'linkedin_company' }; } else if (url.includes('instagram.com')) { return { tool: 'instagram_profile' }; } ``` ### Pattern 2: Incremental Updates Track and update only changed data: ```javascript // Compare with existing data const existing = $('Database').first().json; const fresh = $json; const changes = {}; if (existing.followers !== fresh.followers) { changes.followers = fresh.followers; changes.follower_growth = fresh.followers - existing.followers; } return changes.followers ? changes : null; ``` ### Pattern 3: Data Enrichment Pipeline Chain multiple MCP tools for comprehensive enrichment: ``` LinkedIn User → Get Company → Get Company Employees → Analyze Network ``` ## Resources - [View All Available MCP Tools](/docs/mcp-server/tools) - [n8n MCP Tool Installation](/docs/mcp-server/n8n-tool/installation) - [n8n Official Documentation](https://docs.n8n.io/) - [Anysite API Reference](/docs/api) ## Need Help? #### Get Support Contact our support team for assistance with n8n MCP integration --- # n8n MCP Tool Installation ## Overview The Anysite MCP Tool for n8n provides seamless integration between n8n workflows and the Anysite API through the Model Context Protocol (MCP). This allows you to extract LinkedIn, Instagram, Reddit, and other social media data directly within your n8n automation workflows. ## Prerequisites - Active n8n instance (cloud or self-hosted) - Anysite API account with credentials - MCP Client node installed in n8n (available in n8n version 1.0+) ## Step 1: Get Your Connection URL First, you need to obtain the MCP connection URL from your Anysite dashboard: 1. Visit [anysite.io](https://app.anysite.io/register) and log in to your account 2. Navigate to **MCP Server Integration** section 3. You'll see two connection options: - **OAuth URL**: For clients that support OAuth authentication - **Direct URL**: Contains your API key directly in the URL ![Anysite MCP Server Integration](/images/n8n_cred.png) > For n8n integration, use the **Direct URL** as it includes authentication credentials. 4. In the "Or add to your client" section, select **n8n** 5. The "Auto" tab will display your complete connection URL 6. Click **Copy** to copy the URL (format: `https://api.anysite.io/mcp/direct?api_key=YOUR_KEY`) > Keep your connection URL secure - it contains your API key. Never share it publicly or commit it to version control. ## Step 2: Configure MCP Client in n8n Now add the MCP Client node to your n8n workflow: 1. **Add MCP Client Node** - Open your n8n workflow editor - Search for "MCP Client" node and add it to your canvas 2. **Configure Connection Parameters** ![n8n MCP Client Configuration](/images/n8n_mcp.png) Set the following parameters in the node configuration: - **Endpoint**: Paste your Direct URL from Step 1 ``` https://api.anysite.io/mcp/direct?api_key=YOUR_KEY ``` - **Server Transport**: Select `HTTP Streamable` - **Authentication**: Select `None` (Authentication is handled through the API key in the endpoint URL) - **Tools to Include**: - Select `Selected` if you want to use specific tools - Or leave as default to include all available tools 3. **Select Tools** (Optional) If you chose "Selected" for Tools to Include, you can specify which Anysite tools to use: - `linkedin_user` - Extract LinkedIn profile data - `linkedin_company` - Get company information - `linkedin_post` - Fetch post details - `instagram_profile` - Get Instagram profile data - `reddit_post` - Extract Reddit post content - And more... ## Step 3: Verify Connection Test your MCP integration: 1. Click **Execute step** in the n8n MCP Client node 2. Check the execution log for successful connection 3. You should see available tools listed in the output > If the connection is successful, you'll see a list of available Anysite tools that can be used in your workflow. ## Example Workflow Structure Here's a typical workflow structure using the Anysite MCP Tool: ``` Trigger (Webhook/Schedule) ↓ MCP Client (Anysite) ↓ AI Agent Node (uses MCP tools) ↓ Process Results ↓ Output/Store Data ``` ## Troubleshooting #### Connection timeout or authentication errors - Verify your API key is valid and active - Check that your Anysite account has API access enabled - Ensure the connection URL is complete and correctly copied - Try regenerating the connection URL from the Anysite dashboard #### MCP Client node not available - Update n8n to the latest version (MCP support requires v1.0+) - Check if MCP Client node is enabled in your n8n instance - For self-hosted n8n, ensure all dependencies are installed #### Tools not appearing or not working - Verify your Anysite subscription includes the tools you need - Check API rate limits and quota in your Anysite account - Ensure the endpoint URL includes the `api_key` parameter - Try reconnecting by updating the endpoint URL #### HTTP Streamable transport issues - Confirm "Server Transport" is set to "HTTP Streamable" - Check network connectivity between n8n and api.anysite.io - For self-hosted n8n, verify firewall rules allow outbound HTTPS ## Security Best Practices #### Secure Credentials Never expose your API key. Use n8n environment variables or credentials management for sensitive data. #### Access Control Restrict n8n workflow access to authorized team members only. #### Monitor Usage Regularly check your Anysite dashboard for API usage and rate limits. #### Rotate Keys Periodically regenerate your API keys and update n8n configurations. ## Next Steps - [Explore n8n MCP Tool Examples](/docs/mcp-server/n8n-tool/examples) - [View All Available Tools](/docs/mcp-server/tools) - [Learn About Local Server Setup](/docs/mcp-server/local-server/installation) --- # MCP Server Overview ## What is Anysite MCP Server? The Anysite MCP Server gives AI agents (Claude Desktop, Claude Code, Cursor, n8n) direct access to **3,600+ data endpoints** across **600+ sources** — LinkedIn, Instagram, Twitter, Reddit, YouTube, ProductHunt, Google, SEC, and many more. Instead of calling REST APIs manually, your AI agent discovers available endpoints, fetches data, and analyzes results — all through a single MCP connection. #### 3,600+ Endpoints LinkedIn, Instagram, Twitter, Reddit, YouTube, ProductHunt, Google, SEC, and 30+ more sources #### 5 Meta-Tools discover → execute → get_page → query_cache → export_data #### Zero Config New endpoints appear automatically — no server updates needed --- ## Architecture: 5 Meta-Tools > The Anysite MCP Server uses a **meta-tool architecture** with 5 universal tools instead of individual tools per endpoint. This reduces context window usage by 2.5x and supports dynamic endpoint discovery. | Tool | Purpose | |------|---------| | **discover** | Learn what endpoints exist and what parameters they accept | | **execute** | Fetch data from any endpoint | | **get_page** | Paginate through large result sets from cache | | **query_cache** | Filter, sort, and aggregate cached results server-side | | **export_data** | Download full datasets as JSON/CSV/JSONL files | ### Workflow ```text 1. discover("linkedin", "user") → Returns endpoint names, parameter schemas, and LLM hints 2. execute("linkedin", "user", "get", {"user": "darioamodei"}) → Fetches data, returns first 10 items + cache_key 3. get_page(cache_key, offset=10) → Next page from cache (no new API call) 4. query_cache(cache_key, conditions=[{"field": "followers", "op": ">", "value": 1000}]) → Filter/aggregate in cache without loading data into context 5. export_data(cache_key, "csv") → Download full dataset as file ``` > **Why meta-tools?** Instead of loading 1,100+ tool definitions into the LLM context, only 5 compact definitions are needed. The LLM first discovers what's available via `discover()`, then calls the right endpoint with correct parameters via `execute()`. --- ## Data Sources #### LinkedIn **35 endpoints** Profile search, company data, posts, comments, skills, experience, and more #### Instagram **8 endpoints** Posts, comments, likes, user profiles, friendships, and reels #### Twitter/X **4 endpoints** User search, profiles, posts, and content extraction #### Reddit **11 endpoints** Post search, user posts, comments, and content extraction #### YouTube **14 endpoints** Video search, channel videos, video details, comments, and subtitles #### ProductHunt **23 endpoints** Products, launches, makers, topics, and collections #### Google **10 endpoints** Web search, news, maps, and related results #### Web Parser **2 endpoints** Webpage parsing and sitemap extraction #### Y Combinator **3 endpoints** YC company data, founder search, and startup intelligence #### SEC **2 endpoints** SEC company filings and document search #### DuckDuckGo **1 endpoint** Web search powered by DuckDuckGo #### Other Sources **~70 endpoints** Amazon, Facebook, TikTok, Yahoo, Crunchbase, Companies House, GitHub, and 20+ more #### View All Endpoints Browse complete reference of all 1,100+ available MCP endpoints --- ## Quick Start #### Get your MCP URL Sign up at [app.anysite.io](https://app.anysite.io) and copy your Remote MCP Server URL #### Connect your AI client Add the MCP URL to your preferred client: #### Claude Desktop OAuth connection in 60 seconds #### Claude Code CLI integration for developers #### Cursor IDE integration for coding #### n8n Workflow automation #### Start using Ask your AI agent naturally — it will use `discover` and `execute` automatically: > "Find the LinkedIn profile of Sam Altman and show me his recent posts" > "Search for YC companies in the AI space from batch W2024" --- ## Next Steps #### All Endpoints Full reference of 3,600+ endpoints with parameters and examples #### Data Analysis Server-side filtering, aggregation, and export with query_cache #### Custom Endpoints Build your own endpoints that appear automatically in MCP #### Unlimited Plan $30/month for unlimited MCP requests --- # Available MCP Endpoints ## Endpoint Reference Complete reference of all **3,600+ endpoints** available through the Anysite MCP Server. For architecture overview and getting started, see [MCP Server Overview](/docs/mcp-server/overview). > All endpoints below are called via `execute(source, category, endpoint, params)`. Endpoint names listed here are used as the `endpoint` parameter. Use `discover(source, category)` to find the exact parameter schema for any endpoint. Every `execute()` call returns a `cache_key` — use it with [query_cache and export_data](/docs/mcp-server/data-analysis) for server-side filtering, aggregation, and export. ## Quick Navigation - [Web Search](#web-search) (1 endpoint) - [Y Combinator](#y-combinator) (3 endpoints) - [YouTube](#youtube) (14 endpoints) - [SEC](#sec) (2 endpoints) - [LinkedIn](#linkedin) (35 endpoints) - [Instagram](#instagram) (8 endpoints) - [Twitter/X](#twitterx) (4 endpoints) - [Reddit](#reddit) (11 endpoints) - [Web Parser](#web-parser) (2 endpoints) - [Other Sources](#other-sources) (~100 endpoints) --- ## Web Search **Source:** `duckduckgo` | **Category:** `search` ### `duckduckgo_search` Web search parser (DuckDuckGo) returning structured results. **Description**: Web search parser by query. Returns up to 20 results sorted by relevance. Powered by DuckDuckGo. **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `query` | string | ✅ Yes | - | Search query (e.g., 'python fastapi') | - | | `count` | integer | ❌ Optional | 10 | Maximum number of results | Min: 1, Max: 20 | | `request_timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | Min: 20, Max: 1500 | **Example:** ```json { "query": "fastapi tutorial", "count": 15, "request_timeout": 300 } ``` **Use Cases:** - Web research and information gathering - Finding documentation and tutorials - Competitive intelligence - Content discovery --- ## Y Combinator **Source:** `yc` | **Categories:** `company`, `search` > Y Combinator endpoints provide access to startup intelligence, company data, and founder information from the world's most prestigious startup accelerator. ### `get_yc_company` Get comprehensive information about a Y Combinator company by its slug. **Description**: Get Y Combinator company information including description, batch, founders, and metrics. **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `slug` | string | ✅ Yes | - | Y Combinator company slug (e.g., "airbnb", "stripe", "reddit") | - | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | Min: 20, Max: 1500 | **Example:** ```json { "slug": "airbnb", "timeout": 300 } ``` **Response includes:** - Company name and description - YC batch (e.g., "W09", "S16") - Company status (Active, Acquired, Public, Inactive) - Website and social links - Founded year and team size - Location and tags/industries - Founder information **Use Cases:** - Startup research and competitive intelligence - Investment pipeline analysis - Batch cohort studies - Founder background research --- ### `search_yc_companies` Search Y Combinator companies with advanced filtering options. **Description**: Search YC companies by keywords, batch, industry tags, and status filters. **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `query` | string | ❌ Optional | "" | Search keywords (company name, description, tags) | - | | `batch` | string | ❌ Optional | - | Filter by batch (e.g., "W23", "S22") | - | | `status` | string | ❌ Optional | - | Filter by status: "Active", "Acquired", "Public", "Inactive" | - | | `tags` | array[string] | ❌ Optional | - | Filter by industry tags/categories | - | | `count` | integer | ❌ Optional | 10 | Maximum number of results | Min: 1, Max: 100 | | `offset` | integer | ❌ Optional | 0 | Pagination offset | Min: 0 | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | Min: 20, Max: 1500 | **Example:** ```json { "query": "AI", "batch": "W23", "count": 20, "timeout": 300 } ``` **Use Cases:** - Find companies in specific batches - Research companies by industry/vertical - Track acquisitions and successful exits - Discover emerging startups - Build investment deal flow --- ### `search_yc_founders` Search Y Combinator founders with filters for batch, company, industry, and titles. **Description**: Search YC founders by name, company, batch, industry, and job title. **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `query` | string | ❌ Optional | "" | Search by founder name | - | | `company` | string | ❌ Optional | - | Filter by company slug | - | | `batch` | string | ❌ Optional | - | Filter by batch (e.g., "W23", "S22") | - | | `industries` | array[string] | ❌ Optional | - | Filter by YC industries | - | | `titles` | array[string] | ❌ Optional | - | Filter by founder titles (CEO, CTO, etc.) | - | | `top_company` | boolean | ❌ Optional | false | Filter for founders of top YC companies only | - | | `page` | integer | ❌ Optional | 0 | Page number for pagination | Min: 0 | | `hits_per_page` | integer | ❌ Optional | 100 | Results per page | Min: 1, Max: 100 | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | Min: 20, Max: 1500 | **Example:** ```json { "query": "Sam Altman", "industries": ["AI", "Enterprise"], "top_company": true, "hits_per_page": 20, "timeout": 300 } ``` **Response includes:** - Founder name (first and last) - Current company and title - Company slug for further queries - YC batches and industries - Avatar/profile picture - All companies text - Top company indicator **Use Cases:** - Founder background research - Talent sourcing and recruiting - Network mapping and connections - Leadership team analysis - Serial entrepreneur identification --- ## YouTube **Source:** `youtube` | **Categories:** `search`, `video`, `channel` > YouTube endpoints provide access to video search, channel videos, detailed video information, comments, and subtitle extraction capabilities. ### `search_youtube_videos` Search YouTube videos by query with result limit control. **Description**: Search YouTube videos by query and return structured video data including titles, descriptions, views, and engagement metrics. **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `query` | string | ✅ Yes | - | Search query (e.g., "python tutorial", "machine learning basics") | - | | `count` | integer | ✅ Yes | - | Maximum number of results to return | Min: 1, Max: 600 | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | Min: 20, Max: 1500 | **Example:** ```json { "query": "fastapi tutorial", "count": 20, "timeout": 300 } ``` **Response includes:** - Video ID and URL - Title and description - View count, likes, and comments - Upload date and duration - Channel information - Thumbnail URLs **Use Cases:** - Content research and discovery - Competitor analysis - Educational resource finding - Video trend analysis - Content strategy planning --- ### `get_youtube_video` Get comprehensive details about a specific YouTube video by ID or URL. **Description**: Retrieve detailed information about a YouTube video including metadata, engagement metrics, channel data, and video statistics. **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `video` | string | ✅ Yes | - | YouTube video ID or full URL | - | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | Min: 20, Max: 1500 | **Example:** ```json { "video": "dQw4w9WgXcQ", "timeout": 300 } ``` Or with full URL: ```json { "video": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "timeout": 300 } ``` **Response includes:** - Complete video metadata - View count, likes, dislikes - Comment count and statistics - Upload date and duration - Channel information (name, subscribers) - Video description and tags - Category and language - Thumbnail images **Use Cases:** - Video analytics and monitoring - Content performance tracking - Competitor video analysis - SEO research - Engagement metrics collection --- ### `get_youtube_video_subtitles` Extract subtitles/captions from a YouTube video in specified language. **Description**: Retrieve video subtitles (closed captions) with timestamps for accessibility, content analysis, or transcription purposes. **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `video` | string | ✅ Yes | - | YouTube video ID or full URL | - | | `lang` | string | ❌ Optional | "en" | Language code (ISO 639-1 format: 'en', 'ru', 'es', etc.) | - | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | Min: 20, Max: 1500 | **Example:** ```json { "video": "dQw4w9WgXcQ", "lang": "en", "timeout": 300 } ``` **Response includes:** - Full subtitle text - Individual subtitle lines with timestamps - Language information - Subtitle count and duration - Timing synchronization data **Use Cases:** - Content transcription - Accessibility compliance - Video content analysis - Translation workflows - SEO content extraction - Educational material preparation --- ### `get_youtube_channel_videos` Get all videos from a YouTube channel by URL, alias, or ID. **Description**: Retrieve a list of all videos from a YouTube channel including metadata, engagement metrics, and upload information. **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `channel` | string | ✅ Yes | - | YouTube channel URL, alias (@username), or channel ID | - | | `count` | integer | ❌ Optional | 50 | Maximum number of videos to return | Min: 1, Max: 600 | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | Min: 20, Max: 1500 | **Example:** ```json { "channel": "https://www.youtube.com/@mkbhd", "count": 30, "timeout": 300 } ``` Or with channel alias: ```json { "channel": "@mkbhd", "count": 50 } ``` **Response includes:** - Video ID and URL for each video - Title and description - View count, likes, and comments - Upload date and duration - Thumbnail URLs - Channel information **Use Cases:** - Channel content audit - Competitor channel analysis - Content calendar research - Video performance benchmarking - Influencer video inventory --- ### `get_youtube_video_comments` Get comments for a YouTube video by ID or URL. **Description**: Retrieve comments from a YouTube video including author information, like counts, and reply data. **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `video` | string | ✅ Yes | - | YouTube video ID or full URL | - | | `count` | integer | ❌ Optional | 50 | Maximum number of comments to return | Min: 1, Max: 600 | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | Min: 20, Max: 1500 | **Example:** ```json { "video": "dQw4w9WgXcQ", "count": 100, "timeout": 300 } ``` Or with full URL: ```json { "video": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "count": 50 } ``` **Response includes:** - Comment text and author - Author channel information - Like count and reply count - Comment timestamp - Is reply flag - Author profile image **Use Cases:** - Sentiment analysis - Community feedback research - Product mention tracking - Competitor comment monitoring - Influencer engagement analysis --- ## SEC **Source:** `sec` | **Categories:** `search`, `document` > SEC endpoints provide access to U.S. Securities and Exchange Commission EDGAR database for company filings, financial documents, and regulatory disclosures. ### `search_sec_companies` Search SEC EDGAR database for company filings with advanced filtering options. **Description**: Search for SEC filings by company name, ticker symbol, form types, date ranges, and location filters. **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `entity_name` | string | ❌ Optional | "" | Company name or ticker symbol (e.g., "Apple", "AAPL") | - | | `forms` | array[string] | ❌ Optional | null | Form types to include (e.g., ["10-K", "10-Q", "8-K"]) or exclude with '-' prefix (e.g., ["-3", "-4"]) | - | | `location_codes` | array[string] | ❌ Optional | null | State codes to filter by (e.g., ["CA", "NY"]) | - | | `date_from` | string | ❌ Optional | null | Start date in YYYY-MM-DD format | - | | `date_to` | string | ❌ Optional | null | End date in YYYY-MM-DD format | - | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | Min: 20, Max: 1500 | **Example:** ```json { "entity_name": "Apple", "forms": ["10-K", "10-Q"], "date_from": "2024-01-01", "date_to": "2024-12-31", "timeout": 300 } ``` **Response includes:** - Accession number (unique filing ID) - File name and document type - Filing date - Company CIK (Central Index Key) - Form type - Document URLs for retrieval **Use Cases:** - Financial research and analysis - Due diligence investigations - Regulatory compliance monitoring - Investment research - Company intelligence gathering - Historical filing analysis --- ### `get_sec_document` Retrieve the full content of a specific SEC EDGAR document by its URL. **Description**: Fetch and parse SEC EDGAR documents including 10-K, 10-Q, 8-K, proxy statements, and other regulatory filings. **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `document_url` | string | ✅ Yes | - | Direct URL to SEC EDGAR document (obtained from search results) | - | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | Min: 20, Max: 1500 | **Example:** ```json { "document_url": "https://www.sec.gov/Archives/edgar/data/320193/000114036125044561/ef20060722_8k.htm", "timeout": 300 } ``` **Response includes:** - Document URL - Full document content (HTML or XML) - Content type - Parsed and cleaned document text **Use Cases:** - Financial statement analysis - Risk factor assessment - Management discussion review (MD&A) - Executive compensation analysis - Merger and acquisition research - Legal and regulatory compliance **Common Form Types:** - **10-K**: Annual report with comprehensive company overview - **10-Q**: Quarterly financial report - **8-K**: Current report for significant events - **DEF 14A**: Proxy statement (shareholder meetings) - **S-1**: Registration statement for new securities - **4**: Statement of changes in beneficial ownership --- ## LinkedIn **Source:** `linkedin` | **Categories:** `search`, `user`, `company`, `post`, `email`, `job_search`, `group`, `google` > LinkedIn is the most comprehensive category with **35 endpoints** covering profiles, companies, posts, search, skills, experience, and engagement data. ### Search & Discovery **Category:** `search` #### `search_linkedin_users` Search for LinkedIn users based on various criteria. **Description**: Search for LinkedIn users based on various criteria **Parameters:** | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `keywords` | string | ❌ Optional | - | General search keywords | | `first_name` | string | ❌ Optional | - | Filter by first name | | `last_name` | string | ❌ Optional | - | Filter by last name | | `title` | string | ❌ Optional | - | Filter by job title | | `company_keywords` | string | ❌ Optional | - | Filter by company name | | `school_keywords` | string | ❌ Optional | - | Filter by school name | | `location` | string | ❌ Optional | - | Filter by location name | | `count` | integer | ❌ Optional | 10 | Number of results | | `request_timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | **Example:** ```json { "keywords": "software engineer", "location": "San Francisco", "count": 20 } ``` --- #### `search_linkedin_companies` Search LinkedIn companies with advanced filtering options. **Description**: Search LinkedIn companies **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `count` | integer | ✅ Yes | - | Max result count | Max: 1000 | | `keywords` | string | ❌ Optional | "" | Any keyword for searching in the company page. For exact search put desired keywords into brackets | - | | `location` | string | ❌ Optional | [] | Location URN or location name | - | | `industry` | string | ❌ Optional | [] | Industry URN or industry name | - | | `employee_count` | array[string] | ❌ Optional | [] | Employee count filter | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "keywords": "software company", "location": "United States", "count": 100 } ``` --- #### `search_linkedin_educations` Search educational institutions on LinkedIn. **Description**: Search LinkedIn educations **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `name` | string | ✅ Yes | - | Education name | - | | `count` | integer | ✅ Yes | - | Max result count | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "name": "Stanford University", "count": 10 } ``` --- #### `search_linkedin_industries` Search industries on LinkedIn. **Description**: Search LinkedIn industries **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `name` | string | ✅ Yes | - | Industry name | - | | `count` | integer | ✅ Yes | - | Max result count | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "name": "Software", "count": 10 } ``` --- #### `search_linkedin_locations` Search locations on LinkedIn for use in filters. **Description**: Search LinkedIn locations **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `name` | string | ✅ Yes | - | Location name | - | | `count` | integer | ✅ Yes | - | Max result count | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "name": "San Francisco", "count": 10 } ``` --- ### User Profiles **Category:** `user` #### `get_linkedin_profile` Get detailed information about a LinkedIn profile including experience, education, and skills. **Description**: Get detailed information about a LinkedIn profile **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `user` | string | ✅ Yes | - | LinkedIn profile URL or username | - | | `request_timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | Min: 20, Max: 1500 | | `with_experience` | boolean | ❌ Optional | true | Include experience data | - | | `with_education` | boolean | ❌ Optional | true | Include education data | - | | `with_skills` | boolean | ❌ Optional | true | Include skills data | - | **Example:** ```json { "user": "https://www.linkedin.com/in/john-doe", "with_experience": true, "with_education": true, "with_skills": true } ``` --- #### `find_linkedin_user_email` Find LinkedIn user by email address. **Description**: Find LinkedIn user email **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `email` | string | ✅ Yes | - | Email to get user by email | - | | `count` | integer | ❌ Optional | 5 | Max result count | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "email": "john.doe@example.com" } ``` --- #### `get_linkedin_user_email_db` Get LinkedIn user email from internal database. **Description**: Get LinkedIn user email from database **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `profile` | string | ✅ Yes | - | LinkedIn internal_id, profile URL, alias, or set of them (max 10) | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "profile": "https://www.linkedin.com/in/john-doe" } ``` --- #### `get_linkedin_user_posts` Get posts from a LinkedIn user profile. **Description**: Get LinkedIn user posts **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `urn` | string | ✅ Yes | - | User URN (fsd_profile type) or user URL | - | | `count` | integer | ✅ Yes | - | Max result count | - | | `posted_after` | string | ❌ Optional | - | Filter posts created after specified date (timestamp) | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "urn": "urn:li:fsd_profile:ACoAAABCDEF", "count": 20 } ``` --- #### `get_linkedin_user_comments` Get comments from a LinkedIn user. **Description**: Get LinkedIn user comments **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `urn` | string | ✅ Yes | - | User URN (fsd_profile type only) | - | | `count` | integer | ✅ Yes | - | Max result count | - | | `commented_after` | string | ❌ Optional | - | Filter comments created after specified date (timestamp) | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "urn": "urn:li:fsd_profile:ACoAAABCDEF", "count": 50 } ``` --- #### `get_linkedin_user_reactions` Get reactions from a LinkedIn user. **Description**: Get LinkedIn user reactions **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `urn` | string | ✅ Yes | - | User URN (fsd_profile type only) | - | | `count` | integer | ✅ Yes | - | Max result count | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "urn": "urn:li:fsd_profile:ACoAAABCDEF", "count": 100 } ``` --- ### Company Information **Category:** `company` #### `get_linkedin_company` Get comprehensive LinkedIn company information. **Description**: Get LinkedIn company information **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `company` | string | ✅ Yes | - | Company Alias or URL or URN | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "company": "https://www.linkedin.com/company/microsoft" } ``` --- #### `get_linkedin_company_employee_stats` Get employee statistics for a LinkedIn company. **Description**: Get LinkedIn company employee statistics **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `urn` | string | ✅ Yes | - | Company URN | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "urn": "urn:li:company:1234" } ``` --- #### `get_linkedin_company_posts` Get posts from a LinkedIn company page. **Description**: Get LinkedIn company posts **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `urn` | string | ✅ Yes | - | Company URN (company type only) | - | | `count` | integer | ✅ Yes | - | Max result count | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "urn": "urn:li:company:1234", "count": 20 } ``` --- ### Content & Posts **Category:** `post` #### `search_linkedin_posts` Search LinkedIn posts with advanced filters. **Description**: Search LinkedIn posts **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `count` | integer | ✅ Yes | - | Max result count | Max: 1000 | | `keywords` | string | ❌ Optional | "" | Any keyword for searching in the post. For exact search put desired keywords into brackets | - | | `sort` | string | ❌ Optional | "relevance" | Sort type | - | | `date_posted` | string | ❌ Optional | "past-month" | Date posted filter | - | | `content_type` | string | ❌ Optional | - | Desired content type | - | | `mentioned` | string | ❌ Optional | - | Mentioned users URN in posts | - | | `authors` | string | ❌ Optional | - | Authors URN of posts | - | | `author_industries` | string | ❌ Optional | - | Industry URN or industry name | - | | `author_title` | string | ❌ Optional | - | Author job title | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "keywords": "artificial intelligence", "date_posted": "past-week", "count": 50 } ``` --- #### `get_linkedin_post` Get detailed information about a specific LinkedIn post. **Description**: Get LinkedIn post **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `urn` | string | ✅ Yes | - | Post URN or slug | - | | `include_all_document_images` | boolean | ❌ Optional | false | If enabled, all document images will be included | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "urn": "urn:li:activity:1234567890" } ``` --- #### `get_linkedin_post_comments` Get comments from a LinkedIn post. **Description**: Get LinkedIn post comments **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `urn` | string | ✅ Yes | - | Post URN (activity type only) | - | | `count` | integer | ✅ Yes | - | Max result count | - | | `sort` | string | ❌ Optional | "recent" | Sort type. Relevance might not return all results | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "urn": "urn:li:activity:1234567890", "count": 50 } ``` --- #### `get_linkedin_post_reactions` Get reactions from a LinkedIn post. **Description**: Get LinkedIn post reactions **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `urn` | string | ✅ Yes | - | Post URN (activity type only) | - | | `count` | integer | ✅ Yes | - | Max result count | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "urn": "urn:li:activity:1234567890", "count": 100 } ``` --- #### `get_linkedin_post_reposts` Get reposts of a LinkedIn post. **Description**: Get LinkedIn post reposts **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `urn` | string | ✅ Yes | - | Post URN (activity type only) | - | | `count` | integer | ✅ Yes | - | Max result count | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "urn": "urn:li:activity:1234567890", "count": 50 } ``` --- ### Jobs & Groups **Categories:** `job_search`, `group` #### `search_linkedin_jobs` Search for job postings on LinkedIn. **Description**: Search LinkedIn jobs **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `count` | integer | ✅ Yes | - | Max result count | Max: 1000 | | `keywords` | string | ❌ Optional | "" | Any keyword for searching in the job. For exact search put desired keywords into brackets | - | | `sort` | string | ❌ Optional | - | Job sorting type | - | | `experience_level` | string | ❌ Optional | - | Job experience level | - | | `job_types` | string | ❌ Optional | - | Job types | - | | `work_types` | string | ❌ Optional | - | Work types | - | | `industry` | string | ❌ Optional | - | Industry URN | - | | `company` | string | ❌ Optional | - | Company URN | - | | `location` | string | ❌ Optional | "worldwide" | Job location | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "keywords": "python developer", "location": "San Francisco", "count": 50 } ``` --- #### `get_linkedin_group` Get information about a LinkedIn group. **Description**: Get LinkedIn group information **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `group` | string | ✅ Yes | - | Group URN or URL | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "group": "https://www.linkedin.com/groups/123456" } ``` --- ### Google Search **Category:** `google` #### `search_linkedin_google_company` Search for LinkedIn company pages via Google. **Description**: Find LinkedIn company pages using Google search integration for broader discovery **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `query` | string | ✅ Yes | - | Search query for company | - | | `count` | integer | ❌ Optional | 10 | Max result count | - | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | Min: 20, Max: 1500 | **Example:** ```json { "query": "OpenAI", "count": 5 } ``` --- ### Profile Details **Category:** `user` #### `get_linkedin_user_experience` Get work experience history from a LinkedIn profile. **Parameters:** | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `user` | string | ✅ Yes | - | Profile URL, URN, or username | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | **Example:** ```json { "user": "https://www.linkedin.com/in/username" } ``` --- #### `get_linkedin_user_education` Get education history from a LinkedIn profile. **Parameters:** | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `user` | string | ✅ Yes | - | Profile URL, URN, or username | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | **Example:** ```json { "user": "https://www.linkedin.com/in/username" } ``` --- #### `get_linkedin_user_skills` Get skills listed on a LinkedIn profile. **Parameters:** | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `user` | string | ✅ Yes | - | Profile URL, URN, or username | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | **Example:** ```json { "user": "https://www.linkedin.com/in/username" } ``` --- #### `get_linkedin_user_endorsers` Get endorsers for a LinkedIn profile's skills. **Parameters:** | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `user` | string | ✅ Yes | - | Profile URL, URN, or username | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | **Example:** ```json { "user": "https://www.linkedin.com/in/username" } ``` --- #### `get_linkedin_user_certificates` Get certifications from a LinkedIn profile. **Parameters:** | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `user` | string | ✅ Yes | - | Profile URL, URN, or username | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | **Example:** ```json { "user": "https://www.linkedin.com/in/username" } ``` --- #### `get_linkedin_user_honors` Get honors and awards from a LinkedIn profile. **Parameters:** | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `user` | string | ✅ Yes | - | Profile URL, URN, or username | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | **Example:** ```json { "user": "https://www.linkedin.com/in/username" } ``` --- #### `get_linkedin_user_languages` Get languages listed on a LinkedIn profile. **Parameters:** | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `user` | string | ✅ Yes | - | Profile URL, URN, or username | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | **Example:** ```json { "user": "https://www.linkedin.com/in/username" } ``` --- #### `get_linkedin_user_patents` Get patents listed on a LinkedIn profile. **Parameters:** | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `user` | string | ✅ Yes | - | Profile URL, URN, or username | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | **Example:** ```json { "user": "https://www.linkedin.com/in/username" } ``` --- ## Instagram **Source:** `instagram` | **Categories:** `post`, `search`, `user` ### Posts & Content **Category:** `post` #### `get_instagram_post` Get detailed information about an Instagram post. **Description**: Get Instagram post by ID **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `post` | string | ✅ Yes | - | Post ID | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "post": "CxOTF-..." } ``` --- #### `get_instagram_post_comments` Get comments from an Instagram post. **Description**: Get Instagram post comments **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `post` | string | ✅ Yes | - | Post ID | - | | `count` | integer | ✅ Yes | - | Max result count | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "post": "CxOTF-...", "count": 50 } ``` --- #### `get_instagram_post_likes` Get likes from an Instagram post. **Description**: Get Instagram post likes **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `post` | string | ✅ Yes | - | Post ID | - | | `count` | integer | ✅ Yes | - | Max result count | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "post": "CxOTF-...", "count": 100 } ``` --- #### `search_instagram_posts` **Category:** `search` Search Instagram posts by query. **Description**: Search Instagram posts **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `query` | string | ✅ Yes | - | Search query | - | | `count` | integer | ✅ Yes | - | Max result count | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "query": "nature photography", "count": 50 } ``` --- ### User Profiles **Category:** `user` #### `get_instagram_user` Get Instagram user profile information. **Description**: Get Instagram user profile **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `user` | string | ✅ Yes | - | User ID, alias or URL | - | | `with_creation_date` | boolean | ❌ Optional | false | Set to true if you need to get account creation date | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "user": "natgeo", "with_creation_date": true } ``` --- #### `get_instagram_user_friendships` Get followers or following list from Instagram user. **Description**: Get Instagram user friendships **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `user` | string | ✅ Yes | - | User ID, alias or URL | - | | `count` | integer | ✅ Yes | - | Max result count | - | | `type` | string | ✅ Yes | - | Type of relationships to fetch (followers/following) | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "user": "natgeo", "count": 100, "type": "followers" } ``` --- #### `get_instagram_user_posts` Get posts from an Instagram user profile. **Description**: Get Instagram user posts **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `user` | string | ✅ Yes | - | User ID, alias or URL | - | | `count` | integer | ✅ Yes | - | Max result count | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "user": "natgeo", "count": 20 } ``` --- #### `get_instagram_user_reels` Get reels from an Instagram user profile. **Description**: Get Instagram user reels **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `user` | string | ✅ Yes | - | User ID, alias or URL | - | | `count` | integer | ✅ Yes | - | Max result count | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "user": "natgeo", "count": 10 } ``` --- ## Twitter/X **Source:** `twitter` | **Categories:** `search`, `user`, `user_tweets` ### Search & Discovery **Category:** `search` #### `search_twitter_posts` Search Twitter/X posts with advanced filtering. **Description**: Search Twitter posts **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `count` | integer | ✅ Yes | - | Max result count | - | | `query` | string | ❌ Optional | "" | Main search query. Can include special operators like from:user, to:user, #hashtag | - | | `exact_phrase` | string | ❌ Optional | "" | Exact phrase (in quotes). Will be added as "phrase" to the query | - | | `any_of_these_words` | string | ❌ Optional | - | Any of these words (OR condition) | - | | `none_of_these_words` | string | ❌ Optional | - | None of these words (NOT condition) | - | | `these_hashtags` | string | ❌ Optional | - | These hashtags | - | | `language` | string | ❌ Optional | - | Language of tweets | - | | `from_these_accounts` | string | ❌ Optional | - | From these accounts | - | | `to_these_accounts` | string | ❌ Optional | - | To these accounts | - | | `mentioning_these_accounts` | string | ❌ Optional | - | Mentioning these accounts (username with @) | - | | `min_replies` | string | ❌ Optional | - | Minimum number of replies | - | | `min_likes` | string | ❌ Optional | - | Minimum number of likes | - | | `min_retweets` | string | ❌ Optional | - | Minimum number of retweets | - | | `from_date` | string | ❌ Optional | - | Starting date for tweets search (timestamp) | - | | `to_date` | string | ❌ Optional | - | Ending date for tweets search (timestamp) | - | | `search_type` | string | ❌ Optional | "Top" | Type of search results | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "query": "artificial intelligence", "min_likes": "100", "count": 50 } ``` --- #### `search_twitter_users` Search Twitter/X users. **Description**: Search Twitter users **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `count` | integer | ✅ Yes | - | Max result count | - | | `query` | string | ❌ Optional | "" | Main search users query | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "query": "python developer", "count": 20 } ``` --- ### User Data **Category:** `user` #### `get_twitter_user` Get Twitter/X user profile information. **Description**: Get Twitter user profile **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `user` | string | ✅ Yes | - | User Alias or URL | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "user": "elonmusk" } ``` --- #### `get_twitter_user_posts` Get posts from a Twitter/X user. **Description**: Get Twitter user posts **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `user` | string | ✅ Yes | - | User ID, alias or URL | - | | `count` | integer | ✅ Yes | - | Max result count | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "user": "elonmusk", "count": 20 } ``` --- #### `get_twitter_user_tweets` Get tweets from a Twitter/X user (alternative endpoint). **Description**: Get Twitter user tweets with extended data **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `user` | string | ✅ Yes | - | User ID, alias or URL | - | | `count` | integer | ❌ Optional | 10 | Max result count | - | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | Min: 20, Max: 1500 | **Example:** ```json { "user": "elonmusk", "count": 20 } ``` --- ## Reddit **Source:** `reddit` | **Categories:** `search`, `posts`, `user` ### Search & Content **Category:** `search` #### `search_reddit_posts` Search Reddit posts across all subreddits. **Description**: Search Reddit posts **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `query` | string | ✅ Yes | - | Main search query | - | | `count` | integer | ✅ Yes | - | Max result count | - | | `sort` | string | ❌ Optional | "relevance" | Type of search results sorting | - | | `time_filter` | string | ❌ Optional | "all" | Time filter for search results | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "query": "machine learning", "sort": "relevance", "time_filter": "week", "count": 50 } ``` --- #### `get_reddit_post` Get detailed information about a Reddit post. **Description**: Get Reddit post details **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `post_url` | string | ✅ Yes | - | Reddit post URL or path (e.g., /r/DogAdvice/comments/1o2g2pq/title/ or full URL) | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "post_url": "https://www.reddit.com/r/Python/comments/..." } ``` --- #### `get_reddit_post_comments` Get comments from a Reddit post. **Description**: Get Reddit post comments **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `post_url` | string | ✅ Yes | - | Reddit post URL or path | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "post_url": "https://www.reddit.com/r/Python/comments/..." } ``` --- ### User Data **Category:** `user` #### `get_reddit_user_posts` Get posts by a Reddit user. **Description**: Get Reddit user's post history **Parameters:** | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `user` | string | ✅ Yes | - | Reddit username or URL | | `count` | integer | ❌ Optional | 10 | Max result count | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | **Example:** ```json { "user": "spez", "count": 20 } ``` --- #### `get_reddit_user_comments` Get comments by a Reddit user. **Description**: Get Reddit user's comment history **Parameters:** | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `user` | string | ✅ Yes | - | Reddit username or URL | | `count` | integer | ❌ Optional | 10 | Max result count | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | **Example:** ```json { "user": "spez", "count": 20 } ``` --- #### `get_reddit_user` Get Reddit user profile information. **Description**: Get Reddit user profile data **Parameters:** | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `user` | string | ✅ Yes | - | Reddit username or URL | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | **Example:** ```json { "user": "spez" } ``` --- #### `get_reddit_user_comments_extended` Get extended comment data for a Reddit user. **Description**: Get Reddit user comments with additional metadata **Parameters:** | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `user` | string | ✅ Yes | - | Reddit username or URL | | `count` | integer | ❌ Optional | 10 | Max result count | | `timeout` | integer | ❌ Optional | 300 | Request timeout in seconds | **Example:** ```json { "user": "spez", "count": 20 } ``` --- ## Web Parser **Source:** `webparser` | **Categories:** `parse`, `sitemap` ### Page Extraction **Category:** `parse` #### `parse_webpage` Parse and extract content from any webpage with flexible filtering options. **Description**: Parse and extract content from a webpage with flexible filtering options **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `url` | string | ✅ Yes | - | URL of the page to parse | - | | `include_tags` | array[string] | ❌ Optional | - | CSS selectors of elements to include (keep only these) | - | | `exclude_tags` | array[string] | ❌ Optional | - | CSS selectors or wildcard masks of elements to exclude. Examples: '.sidebar', '*promo*' | - | | `only_main_content` | boolean | ❌ Optional | false | Extract only main content of the page (heuristic algorithm) | - | | `remove_comments` | boolean | ❌ Optional | true | Remove HTML comments | - | | `resolve_srcset` | boolean | ❌ Optional | true | Convert image srcset to src (selects the largest image) | - | | `return_full_html` | boolean | ❌ Optional | false | Return full HTML document (True) or only body content (False) | - | | `min_text_block` | integer | ❌ Optional | 200 | Minimum text block size for main content detection (in characters) | - | | `remove_base64_images` | boolean | ❌ Optional | true | Remove base64-encoded images (reduces output size) | - | | `strip_all_tags` | boolean | ❌ Optional | false | Remove all HTML tags and return plain text only | - | | `extract_contacts` | boolean | ❌ Optional | false | Extract links, emails, and phone numbers from the page | - | | `same_origin_links` | boolean | ❌ Optional | false | Only extract links from the same domain (used with extract_contacts) | - | | `social_links_only` | boolean | ❌ Optional | false | Only extract social media links (LinkedIn, Twitter/X, Facebook, Instagram, etc.) | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "url": "https://example.com/article", "only_main_content": true, "strip_all_tags": true, "extract_contacts": true } ``` **Use Cases:** - Article content extraction - Contact information gathering - Social media link discovery - Web scraping and data collection --- #### `get_sitemap` Fetch and parse website sitemap with filtering options. **Description**: Fetch and parse website sitemap with filtering options **Parameters:** | Parameter | Type | Required | Default | Description | Constraints | |-----------|------|----------|---------|-------------|-------------| | `url` | string | ✅ Yes | - | Website URL to fetch sitemap from | - | | `include_patterns` | array[string] | ❌ Optional | - | Regex patterns for URL paths to include (all URLs if not specified) | - | | `exclude_patterns` | array[string] | ❌ Optional | - | Regex patterns for URL paths to exclude | - | | `same_host_only` | boolean | ❌ Optional | true | Only include URLs from the same host as the base URL | - | | `respect_robots` | boolean | ❌ Optional | true | Check robots.txt and respect disallowed URLs | - | | `count` | integer | ❌ Optional | - | Maximum number of URLs to return | - | | `return_details` | boolean | ❌ Optional | false | Return detailed sitemap entries (lastmod, changefreq, priority) instead of just URLs | - | | `timeout` | integer | ❌ Optional | 300 | Max scrapping execution timeout (in seconds) | Min: 20, Max: 1500 | **Example:** ```json { "url": "https://example.com", "count": 100, "return_details": true } ``` **Use Cases:** - Website structure analysis - Content inventory - SEO auditing - Bulk URL extraction --- #### Other Sources (~100 endpoints) Product Hunt, Google (Maps & Ads), Amazon, Facebook Ads, TikTok, Yahoo, Companies House, Crunchbase, GitHub, and 20+ more — see the plain-language [Data Sources & Capabilities](/docs/data-sources) page for the full list --- ## Common Parameters Most endpoints share these common parameters: | Parameter | Type | Default | Description | Constraints | |-----------|------|---------|-------------|-------------| | `timeout` | integer | 300 | Maximum execution timeout in seconds | Min: 20, Max: 1500 | > **Timeout Best Practices:** - Use default 300s for most operations - Increase to 600-900s for large data extractions - Use minimum 20s only for quick tests - Maximum 1500s (25 minutes) for very large datasets --- ## LinkedIn URN Format > Many LinkedIn endpoints require **URN (Uniform Resource Name)** identifiers. URNs can be obtained through search endpoints. **URN Types:** - **Profile URN**: `urn:li:fsd_profile:ACoAAABCDEF` - Obtained from: `search_linkedin_users`, `get_linkedin_profile` - **Company URN**: `urn:li:company:1234` - Obtained from: `search_linkedin_companies`, `get_linkedin_company` - **Activity URN** (Posts): `urn:li:activity:1234567890` - Obtained from: `search_linkedin_posts`, `get_linkedin_user_posts` **Getting URNs:** 1. Search for resource using appropriate search tool 2. Extract URN from search results 3. Use URN in subsequent data extraction endpoints **Example workflow:** ```text 1. search_linkedin_users → get profile URN 2. get_linkedin_user_posts → get post URNs 3. get_linkedin_post_comments → get comments using post URN ``` --- ## Best Practices ### Rate Limiting #### Respect Limits Monitor your API usage to stay within quota limits. Use `count` parameters wisely. #### Batch Operations Combine multiple operations where possible instead of making separate calls. #### Timeout Management Set appropriate timeouts based on expected data volume. Don't use maximum timeout unnecessarily. #### Error Handling Implement proper error handling and retry logic for production use. ### Data Extraction #### Efficient Workflows **Do:** - Start with `discover()` to find available endpoints, then use search endpoints to find relevant resources - Extract only needed data using optional parameters - Use filters to narrow results - Set reasonable count limits **Don't:** - Extract all available data if not needed - Make redundant API calls - Ignore pagination options - Use maximum counts by default #### LinkedIn Best Practices - Always obtain URNs through search endpoints first - Use optional boolean parameters (`with_experience`, `with_skills`) to control data volume - Leverage location/industry URN filters for precise targeting - Use `keywords` with brackets for exact match: `"[software engineer]"` #### Instagram & Twitter - User identifiers can be usernames, URLs, or IDs - For historical data, use timestamp filters where available - Post IDs are platform-specific formats - Consider engagement metrics for content analysis #### Web Parsing - Use `only_main_content=true` for article extraction - Leverage `exclude_tags` to remove ads/navigation - Enable `extract_contacts` for lead generation - Set `strip_all_tags=true` for plain text output ### Security > - Never commit API keys or credentials to version control - Use environment variables for sensitive data - Monitor API usage regularly - Rotate keys periodically - Follow platform terms of service --- ## Endpoint Statistics **Total Endpoints**: 1,100+ across 600+ data sources **MCP Tools**: 5 meta-tools (discover, execute, get_page, query_cache, export_data) **By Platform:** - **LinkedIn**: 35 endpoints — Most comprehensive (profiles, companies, posts, skills, experience) - **Product Hunt**: 23 endpoints — products, launches, makers, collections, topics - **YouTube**: 14 endpoints - **Reddit**: 11 endpoints - **Google**: 10 endpoints — Maps & Ads transparency - **Instagram**: 8 endpoints - **Companies House**: 8 endpoints — UK official registry - **Yahoo**: 7 endpoints — search & finance - **Amazon**: 5 endpoints - **Facebook**: 5 endpoints — Ad Library - **TikTok**: 5 endpoints - **Twitter/X**: 4 endpoints - **Y Combinator**: 3 endpoints - **Crunchbase**: 3 endpoints - **GitHub**: 3 endpoints - **SEC**: 2 endpoints - **Web Parser**: 2 endpoints - **DuckDuckGo**: 1 endpoint - **Other Sources**: ~30 endpoints across niche & AI-based scrapers (Capterra, G2, Mercari, OpenCorporates, Siemens, Honeywell, and more) **By Category:** - **Search & Discovery**: 40+ endpoints (people, companies, posts, videos, products, web) - **User & Profile Data**: 30+ endpoints (profiles, skills, experience, education, certificates) - **Content & Posts**: 30+ endpoints (social posts, videos, launches, reviews) - **Comments & Engagement**: 15+ endpoints - **Company & Registry Data**: 25+ endpoints (LinkedIn, YC, Crunchbase, SEC, Companies House) - **Document & Media Extraction**: 5+ endpoints (SEC documents, YouTube subtitles, web pages) - **Marketplaces & Ads**: 20+ endpoints (Amazon, Mercari, Facebook & Google Ads) --- ## Usage Examples ### LinkedIn Research Workflow (with query_cache) ```text 1. discover("linkedin", "search") → Get available search endpoints and parameters 2. execute("linkedin", "search", "search_users", {keywords: "CTO", location: "San Francisco", count: 50}) → Get list of CTOs in SF + cache_key 3. query_cache(cache_key, conditions=[{field: "followers", op: ">", value: 1000}]) → Filter only profiles with 1000+ followers (without loading all 50 into context) 4. execute("linkedin", "user", "get", {user: profile_url}) → Extract detailed profile information 5. export_data(cache_key, "csv") → Download full search results as CSV ``` ### Instagram Influencer Analysis ```text 1. execute("instagram", "user", "get", {user: "username"}) → Get profile metrics 2. execute("instagram", "user", "posts", {user: "username", count: 20}) → Extract recent posts + cache_key 3. query_cache(cache_key, aggregate={field: "likes", op: "avg"}) → Calculate average likes per post (server-side) 4. query_cache(cache_key, sort_by="likes", sort_order="desc", limit=5) → Get top 5 posts by engagement ``` ### Reddit Content Monitoring ```text 1. execute("reddit", "search", "search_posts", {query: "product name", time_filter: "week"}) → Find relevant discussions + cache_key 2. query_cache(cache_key, sort_by="score", sort_order="desc", limit=10) → Get top 10 posts by score 3. execute("reddit", "posts", "get_comments", {post_url: url}) → Extract all comments ``` ### YouTube Video Research ```text 1. execute("youtube", "search", "search_videos", {query: "AI tutorial", count: 50}) → Find relevant videos + cache_key 2. query_cache(cache_key, sort_by="view_count", sort_order="desc", limit=10) → Top 10 by views 3. execute("youtube", "video", "get_subtitles", {video: "video_id", lang: "en"}) → Get full video transcript ``` ### SEC Financial Analysis ```text 1. execute("sec", "search", "search_companies", {entity_name: "Tesla", forms: ["10-K", "10-Q"]}) → Find recent financial filings 2. execute("sec", "document", "get", {document_url: filing_url}) → Retrieve full 10-K report ``` --- ## Need Help? #### Documentation Comprehensive guides and tutorials #### API Reference Full REST API documentation #### MCP Integration Setup guides for different clients #### Support Contact our support team --- # Clay AI Agent Integration Anysite MCP + Clay AI Agent = Unlimited Data ## Overview Clay combined with Anysite MCP Server creates the ultimate data enrichment platform with unlimited access to social media data. With MCP Unlimited plan, your Clay tables can enrich leads with data from LinkedIn, Instagram, Twitter, Reddit, and more without any request limits or waterfall restrictions. **Perfect for:** - Lead enrichment and prospecting - Company research and intelligence - Contact data enrichment workflows - Multi-platform data waterfall automation - Competitive analysis and monitoring > **MCP Unlimited Plan Required:** This integration requires an active MCP Unlimited subscription ($30/month) for unlimited data extraction. ## Prerequisites Before you begin, ensure you have: - Active [Clay](https://clay.com) account (Free or paid plan) - Anysite account with MCP Unlimited subscription - Basic understanding of Clay tables and enrichments ## Step 1: Get Your MCP Connection URL First, obtain your Direct URL from the Anysite dashboard: #### Log in to Anysite Visit [app.anysite.io](https://app.anysite.io) and sign in to your account #### Navigate to MCP Integration Go to the **MCP Server Integration** section in your dashboard #### Copy Direct URL Anysite MCP Server Integration - Get Direct URL You'll see two connection options: - **OAuth URL**: `https://mcp.anysite.io/mcp` - **Direct URL**: `https://mcp.anysite.io/mcp?api_key=YOUR_KEY` Click **Copy** next to the **Direct URL** - this includes your API key for authentication. > **Security Notice:** Your Direct URL contains your API key. Keep it secure and never share it publicly or commit it to version control. ## Step 2: Configure MCP in Clay Now connect the MCP Server to your Clay account: #### Open Clay Tools Settings Clay Tools Dashboard Navigate to **Settings** in your Clay account and scroll to the **Tools** section. You'll see various integrations including Notion, Intercom, and Linear. Scroll down to find **Anysite MCP** or click **+ Add custom MCP server** button. #### Add Custom MCP Server Add Custom MCP Server in Clay Click **+ Add custom MCP server** to open the configuration dialog. #### Configure Connection In the "Add Custom MCP Server Account" dialog, fill in: 1. **Name your connection**: Enter "Anysite MCP" (or any name you prefer) 2. **MCP URL**: Paste your Direct URL from Step 1 ``` https://mcp.anysite.io/mcp?api_key=YOUR_API_KEY ``` 3. **MCP API key**: Leave empty (authentication is in the URL) 4. Click **Save** #### Verify Connection Once saved, the MCP connection will appear in your Tools list with a toggle to enable/disable it. Toggle it ON to activate. Your Clay account now has access to all 70+ Anysite tools! > **Connection successful!** Your Clay account can now use Anysite MCP tools in any table enrichment workflow. ## Step 3: Using MCP in Clay Tables After connecting MCP, you can use it in your Clay tables: ### System Prompt for Clay AI Agent When using Clay's AI enrichment features, configure your agent with: ``` You are a data enrichment AI with access to Anysite MCP tools. Use these tools to extract data from LinkedIn, Instagram, Twitter, and Reddit. When enriching leads: 1. Use linkedin_user to get comprehensive LinkedIn profile data 2. Use linkedin_company for company information 3. Use linkedin_user_posts to analyze recent activity and content 4. Extract contact information, job details, and engagement metrics Always return well-structured data suitable for Clay table columns. ``` ### Available Tools Your Clay enrichment workflows now have access to 70+ tools including: **LinkedIn (27 tools)** - Profile extraction, enrichment, and messaging - Company research and employee data - Post and comment analysis - Employee search and filtering - Job listings and company updates **Instagram (8 tools)** - Profile data and bio information - Posts, reels, and stories - Comments and engagement metrics - Follower and following analysis **Twitter/X (5 tools)** - Profile information and bio - Tweet extraction and analysis - User and post search - Engagement metrics **Reddit (5 tools)** - Post details and content - Comment threads - Subreddit search - User posts and comments **YouTube (5 tools)** - Video search and metadata - Channel videos extraction - Video details and engagement - Video comments analysis - Subtitle extraction **Y Combinator (3 tools)** - Company profiles - Founder search - Startup intelligence **SEC (2 tools)** - Company filings search - Document retrieval **Web Tools (3 tools)** - Webpage parsing and extraction - Sitemap extraction - Web search and discovery #### View All Tools Browse complete list of all available MCP tools ## Use Cases & Examples ### 1. Lead Enrichment Waterfall **Clay Table Setup:** ``` Column 1: LinkedIn URL (input) Column 2: Enrich with LinkedIn Profile (using MCP) Column 3: Get Company Data (using MCP) Column 4: Extract Recent Posts (using MCP) Column 5: AI Analysis & Scoring ``` **What Clay does:** 1. Takes LinkedIn URL as input 2. Uses `linkedin_user` to extract full profile data 3. Uses `linkedin_company` to get company information 4. Uses `linkedin_user_posts` to analyze recent activity 5. AI agent synthesizes data into enriched lead profile ### 2. Company Research & Intelligence **Use Case:** Building a list of target companies with detailed research data **Clay Workflow:** - **Input**: Company LinkedIn URLs - **Enrichment 1**: Extract company data with `linkedin_company` - **Enrichment 2**: Get employee count and key personnel with `linkedin_company_employees` - **Enrichment 3**: Analyze recent company posts with `linkedin_company_posts` - **Enrichment 4**: AI agent creates company intelligence summary - **Output**: Comprehensive company profiles with decision-maker insights ### 3. Multi-Platform Data Waterfall **Scenario:** Enrich leads with data from multiple platforms, falling back when one source fails **Clay Waterfall Setup:** ``` 1. Try LinkedIn Profile (primary source) ↓ If fails or incomplete 2. Try Twitter Profile (secondary source) ↓ If fails or incomplete 3. Try Instagram Profile (tertiary source) ↓ If fails or incomplete 4. Try Web Search (final fallback) ``` **Tools used:** - `linkedin_user` - `search_twitter_users` - `instagram_user` - `web_search` ### 4. Recruitment & Talent Sourcing **Use Case:** Find and enrich potential candidates matching specific criteria **Clay Workflow:** 1. **Search**: Use `search_linkedin_users` with job title and location filters 2. **Enrich**: Extract detailed profiles with `linkedin_user` 3. **Analyze**: Get recent posts and activity with `linkedin_user_posts` 4. **Score**: AI agent evaluates fit based on experience and engagement 5. **Export**: Push qualified candidates to ATS or CRM ### 5. Competitive Monitoring **Use Case:** Track competitor activity across platforms automatically **Clay Table:** - **Input**: List of competitor LinkedIn company pages - **Schedule**: Daily/weekly refresh - **Enrichments**: - Latest posts and announcements - New hires and team changes - Engagement metrics and trends - Product launches and updates - **Output**: Automated competitive intelligence report ## Integration with Clay Workflows ### Basic Enrichment Structure ``` ┌─────────────────────┐ │ Input Column │ │ (LinkedIn URLs) │ └──────────┬──────────┘ │ ▼ ┌─────────────────────┐ │ MCP Enrichment │ │ (Extract Profile) │ └──────────┬──────────┘ │ ▼ ┌─────────────────────┐ │ AI Agent Analysis │ │ (with MCP tools) │ └──────────┬──────────┘ │ ▼ ┌─────────────────────┐ │ Output Columns │ │ (Enriched Data) │ └─────────────────────┘ ``` ### Advanced Multi-Source Waterfall ``` ┌──────────────────┐ │ Input URL │ └────────┬─────────┘ │ ┌─────────┴─────────┐ │ │ ▼ ▼ ┌───────────────┐ ┌───────────────┐ │LinkedIn Enrich│ │Twitter Enrich │ │ (MCP Tool) │ │ (MCP Tool) │ └───────┬───────┘ └───────┬───────┘ │ │ └─────────┬─────────┘ │ ▼ ┌───────────────┐ │ AI Synthesis │ │ (MCP Tools) │ └───────┬───────┘ │ ▼ ┌───────────────┐ │ Final Output │ └───────────────┘ ``` ### Real-Time Data Pipeline ``` ┌────────────────────────────────────────────┐ │ Clay Table (Auto-refresh) │ ├────────────────────────────────────────────┤ │ │ │ 1. Import leads from webhook/CSV │ │ 2. Enrich with MCP tools (unlimited) │ │ 3. AI agent analysis and scoring │ │ 4. Filter and qualify leads │ │ 5. Push to CRM/Slack/Email │ │ │ │ All powered by Anysite MCP │ └────────────────────────────────────────────┘ ``` ## Troubleshooting #### Connection fails or MCP server not showing **Possible causes:** - Invalid or expired API key - Incorrect URL format - Network connectivity issues **Solutions:** - Regenerate your Direct URL from Anysite dashboard - Ensure the URL includes `?api_key=YOUR_KEY` parameter - Check that your Anysite subscription is active - Try removing and re-adding the MCP connection - Toggle the MCP server ON in Clay Tools settings #### MCP tools not available in enrichments **Possible causes:** - Connection not properly saved or enabled - MCP Unlimited plan not active - Clay cache needs refresh **Solutions:** - Check that Anysite MCP toggle is ON in Tools settings - Verify your MCP Unlimited subscription at [app.anysite.io](https://app.anysite.io) - Try creating a new enrichment column - Refresh your browser and check again - Test with a simple LinkedIn URL enrichment #### Rate limits or quota errors **Note:** With MCP Unlimited, you should have no rate limits for MCP requests. **If you see errors:** - Verify you're on MCP Unlimited plan (not pay-per-use) - Check your subscription status in Anysite dashboard - Direct API calls (outside MCP) are billed separately - Clay's own rate limits may still apply to non-MCP enrichments - Contact support if issues persist #### Enrichments fail or return empty data **Possible causes:** - Invalid input URLs or identifiers - Target profile is private or restricted - Incorrect tool selection **Solutions:** - Verify input URLs are correctly formatted - Check that LinkedIn URLs include full profile path - Some private profiles may not return data - Try alternative tools from the same platform - Review tool documentation for required parameters #### Authentication errors **Error message:** "Invalid API key" or "Unauthorized" **Solutions:** - Your API key in the Direct URL may be incorrect - Go to [app.anysite.io](https://app.anysite.io) and copy a fresh Direct URL - Delete the MCP connection in Clay and recreate it - Ensure you copied the entire URL including the key parameter - Check for any extra spaces or characters in the URL ## Security Best Practices #### Protect API Keys Never expose your Direct URL in: - Shared Clay tables - Public workspaces - Screenshots - Documentation - Version control Rotate keys regularly from Anysite dashboard. #### Access Control Manage Clay workspace access: - Only invite trusted team members - Use separate API keys for different teams - Monitor enrichment activity in Clay logs - Review Anysite usage dashboard regularly #### Data Privacy Handle extracted data responsibly: - Follow GDPR and data protection laws - Don't store sensitive data unnecessarily - Implement data retention policies - Respect platform terms of service - Use Clay's data encryption features #### Monitor Usage Track your enrichment activity: - Review Clay table run history - Check Anysite dashboard for usage patterns - Set up alerts for failed enrichments - Monitor API response times - Track data quality and success rates ## Benefits of Clay + MCP Integration #### Unlimited Enrichments With MCP Unlimited ($30/month), enrich as many leads as you need without worrying about waterfall limits, credit usage, or overage charges. #### No Waterfall Restrictions Unlike traditional Clay enrichments, MCP tools have no waterfall restrictions. Use them as primary sources without burning through expensive credits. #### 70+ Data Sources Single connection gives you access to LinkedIn, Instagram, Twitter, Reddit, and web data - all unified in your Clay workflows. #### Real-Time Data Extract fresh data in real-time directly from platforms. No stale databases or outdated information - always get the latest data. ## Next Steps #### View All MCP Tools Explore the complete list of 70+ tools available for enrichments #### MCP Unlimited Plan Learn more about MCP Unlimited benefits and pricing #### Dashboard Manage your subscription and monitor usage #### Clay Create your Clay account and start building enrichment workflows ## Support Need help with Clay + MCP integration? #### Email Support Get technical assistance from our team #### Documentation Browse complete MCP documentation #### Community Join discussions and share use cases #### Status Page Check API status and uptime --- > **Ready to supercharge your data enrichment?** Connect your Clay account to Anysite MCP and unlock unlimited enrichments today! --- # Grok Integration ## Overview Grok (grok.com) supports custom MCP connectors, letting you plug the Anysite MCP Server directly into your Grok conversations. Once connected, Grok can pull live data from LinkedIn, Instagram, Twitter/X, Reddit, e-commerce marketplaces, company registries, and 550+ other sources — right in the chat. **Perfect for:** - Lead research and enrichment during conversations - Company and people intelligence on demand - Social media monitoring and content analysis - Market and competitor research - CRM enrichment workflows (HubSpot, Pipedrive) > **MCP Unlimited Plan Required:** This integration requires an active MCP Unlimited subscription ($30/month) for unlimited data extraction. ## Prerequisites Before you begin, ensure you have: - A [Grok](https://grok.com) account with access to Connectors - Anysite account with MCP Unlimited subscription - A browser that allows pop-up windows from grok.com (needed for OAuth authorization) > Unlike API-key integrations, Grok connects via **OAuth** — you don't need to copy any API key. Authentication happens in a secure Anysite pop-up window. ## Step 1: Open Connectors in Grok #### Go to Skills and Connectors In Grok, open the **Skills and Connectors** page and switch to the **Connectors** tab. Grok Skills and Connectors page - Connectors tab #### Create a New Connector Click **New Connector** in the top-right corner, then choose **Custom — Add your own custom connector**. Grok New Connector dialog with Custom option ## Step 2: Configure the Anysite Connector #### Fill in the Custom Connector form Enter the connection details: 1. **Name**: `Anysite` 2. **Server URL**: `https://mcp.anysite.io` Custom Connector form with Anysite name and MCP server URL Click **Add Connector**. #### Connect and authorize After the connector is added, click **Connect**. A pop-up window opens with the Anysite authorization page: Anysite OAuth authorization page for grok.com 1. Review what grok.com will be allowed to do (use Anysite MCP tools, read your account email, use credits from your plan) 2. Under **Use credits from**, select your **MCP Unlimited** plan (marked *Recommended*) 3. Click **Allow access** > **Seeing "Connection failed" after clicking Connect?** Your browser most likely blocked the authorization pop-up. Allow pop-up windows for **grok.com** in your browser settings, then click **Connect** (or **Reauthenticate**) again — the Anysite authorization window will open and you can complete the login. ## Step 3: Verify the Connection Once authorized, open the Anysite connector card in Grok. You should see **All tools enabled** with the list of available tools: Anysite connector connected in Grok with all tools enabled > **Connection successful!** Grok now has access to the full Anysite toolset — 3,500+ endpoints across 550+ data sources. ### Available Tools The Anysite MCP Server exposes universal meta-tools that cover the entire API surface: - **`discover`** — find the right data source and endpoint for any request - **`execute`** — call any of the 3,500+ endpoints (LinkedIn, Instagram, Twitter/X, Reddit, YouTube, e-commerce, registries, and more) - **`get_page`** / **`query_cache`** / **`export_data`** — paginate, re-filter, and export collected results - **`crm_*`** — connect and enrich HubSpot or Pipedrive records (contacts, companies, schema, undo) #### View All Tools Browse the complete list of available MCP tools ## Use Cases & Examples ### 1. Lead Research in Chat Ask Grok directly: ``` Find the LinkedIn profile of the CTO of Acme Corp, summarize their background, and pull their 5 most recent posts. ``` Grok uses `discover` to locate the LinkedIn endpoints, then `execute` to fetch the profile and posts — no manual API calls needed. ### 2. Company Intelligence ``` Research Anthropic: company profile, headcount growth, recent LinkedIn posts, and any recent funding news. ``` ### 3. Multi-Platform Monitoring ``` What are people saying about our brand on Reddit and Twitter this week? Summarize sentiment and highlight the top threads. ``` ### 4. E-commerce & Market Research ``` Compare prices for Sony WH-1000XM5 across Amazon, eBay and Walmart, and pull the review summary from each. ``` ### 5. CRM Enrichment ``` Connect to my HubSpot and enrich my 20 newest contacts with their current job titles and LinkedIn profiles. ``` ## Troubleshooting #### Connection failed after clicking Connect **Most common cause:** the browser blocked the OAuth pop-up window. **Solutions:** - Allow pop-up windows for **grok.com** in your browser settings - Click **Connect** (or **Reauthenticate**) again and complete the authorization in the pop-up - If the pop-up opens but shows an error, log in to [app.anysite.io](https://app.anysite.io) first, then retry #### Authorization page doesn't show my MCP Unlimited plan **Possible causes:** - MCP Unlimited subscription is not active - You're logged in to a different Anysite account **Solutions:** - Verify your subscription at [app.anysite.io](https://app.anysite.io) - Log out of Anysite in the pop-up and sign in with the correct account - Make sure **MCP Unlimited** is selected under "Use credits from" before clicking **Allow access** #### Tools not available in conversations **Solutions:** - Open the connector card and check that it shows **All tools enabled** - Toggle the connector off and on, or click **Reauthenticate** - Start a new conversation — connectors added mid-chat may not be picked up #### Rate limits or quota errors **Note:** With MCP Unlimited, MCP requests have no rate limits. **If you see errors:** - Verify the connector is using credits from your **MCP Unlimited** plan (visible on the authorization screen) - Check your subscription status in the Anysite dashboard - Contact support if issues persist #### Connector stopped working after some time **Solutions:** - Click **Reauthenticate** on the connector card to refresh the OAuth session - If that fails, **Disconnect** and connect again - Check [status.anysite.io](https://status.anysite.io) for any ongoing incidents ## Security Best Practices #### OAuth, Not API Keys The Grok integration uses OAuth — no API key ever leaves Anysite. You can revoke access at any time by disconnecting the connector or from your Anysite dashboard. #### Review Permissions The authorization screen lists exactly what grok.com can do: use MCP tools on your behalf, read your account email, and use credits from your selected plan. Review it before clicking **Allow access**. #### Data Privacy Handle extracted data responsibly: follow GDPR and data protection laws, and respect platform terms of service. Third-party connectors are not built or maintained by xAI. #### Monitor Usage Track your MCP activity in the Anysite dashboard and review connected integrations regularly. ## Benefits of Grok + MCP Integration #### Unlimited Requests With MCP Unlimited ($30/month), make as many data requests as you need in Grok — no credit anxiety, no overage charges. #### One-Click OAuth Setup No API keys to copy or store. Add the server URL, authorize in the pop-up, and you're done. #### 550+ Data Sources A single connector gives Grok access to 3,500+ endpoints: social media, e-commerce, company registries, finance, real estate, and more. #### Real-Time Data Grok answers with fresh data extracted live from the source platforms — no stale databases. ## Next Steps #### View All MCP Tools Explore the complete MCP toolset #### MCP Unlimited Plan Learn more about MCP Unlimited benefits and pricing #### Dashboard Manage your subscription and monitor usage #### Grok Open Grok and start asking data questions ## Support Need help with the Grok + MCP integration? #### Email Support Get technical assistance from our team #### Documentation Browse complete MCP documentation #### Community Join discussions and share use cases #### Status Page Check API status and uptime --- > **Ready to give Grok superpowers?** Connect Anysite MCP and start pulling live data from 550+ sources directly in your conversations! --- # Make AI Agent Integration Anysite MCP + Make.com AI Agent = Unlimited Data ## Overview Make.com AI Agents (formerly Integromat) combined with Anysite MCP Server creates a powerful platform for building autonomous AI agents with unlimited access to social media data. With MCP Unlimited plan, your Make AI Agents can extract data from LinkedIn, Instagram, Twitter, Reddit, and more without any request limits. **Perfect for:** - Autonomous research agents - Lead enrichment workflows - Competitor monitoring bots - Multi-platform data aggregation - Scheduled intelligence gathering > **MCP Unlimited Plan Required:** This integration requires an active MCP Unlimited subscription ($30/month) for unlimited data extraction. ## Prerequisites Before you begin, ensure you have: - Active [Make.com](https://make.com) account (Free or paid plan) - Anysite account with MCP Unlimited subscription - Basic understanding of Make AI Agents ## Step 1: Get Your MCP Connection URL First, obtain your Direct URL from the Anysite dashboard: #### Log in to Anysite Visit [app.anysite.io](https://app.anysite.io) and sign in to your account #### Navigate to MCP Integration Go to the **MCP Server Integration** section in your dashboard #### Copy Direct URL Anysite MCP Server Integration - Get Direct URL You'll see two connection options: - **OAuth URL**: `https://mcp.anysite.io/mcp` - **Direct URL**: `https://mcp.anysite.io/mcp?api_key=YOUR_KEY` Click **Copy** next to the **Direct URL** - this includes your API key for authentication. > **Security Notice:** Your Direct URL contains your API key. Keep it secure and never share it publicly or commit it to version control. ## Step 2: Configure MCP in Make AI Agent Now connect the MCP Server to your Make AI Agent: #### Open Make AI Agents Make AI Agents Dashboard Navigate to **AI Agents** section in your Make account and select or create an Agent. #### Add MCP Connection Create MCP Connection in Make In your Agent configuration: 1. Scroll to the **MCP** section 2. Click **+ Add** button 3. A dialog "Create a connection" will appear #### Select New MCP Server Select New MCP Server In the connection dialog: 1. **Connection name**: Enter "Anysite MCP" (or any name you prefer) 2. **MCP Server**: Click the dropdown and select **"+ New MCP server"** 3. The form will expand to show URL and API Key fields #### Configure Connection Paste Direct URL with API Key Fill in the connection details: 1. **URL**: Paste your Direct URL from Step 1 ``` https://mcp.anysite.io/mcp?api_key=YOUR_API_KEY ``` 2. **API Key / Access token**: Leave empty (authentication is in the URL) 3. Click **Save** #### Verify Connection Once saved, the MCP connection will appear in your Agent's MCP section. Your agent now has access to all 70+ Anysite tools! > **Connection successful!** Your Make AI Agent can now use Anysite MCP tools to extract data from any supported platform. ## Step 3: Configure Agent Behavior After connecting MCP, configure your AI Agent to use it effectively: ### System Prompt Example ``` You are an AI research agent with access to Anysite MCP tools. Use these tools to extract data from LinkedIn, Instagram, Twitter, and Reddit. When the user requests information about people or companies: 1. Use linkedin_user or linkedin_company tools to get profile data 2. Analyze the information and provide structured insights 3. If needed, use additional tools to gather supplementary data Always provide accurate, well-formatted responses based on real data. ``` ### Available Tools Your Make AI Agent now has access to 70+ tools including: **LinkedIn (27 tools)** - Profile extraction and messaging - Company research - Post and comment analysis - Employee search - Job listings **Instagram (8 tools)** - Profile data - Posts and reels - Comments and likes - Follower analysis **Twitter/X (5 tools)** - Profile information - Tweet extraction - User and post search **Reddit (5 tools)** - Post details - Comments - Subreddit search - User posts and comments **YouTube (5 tools)** - Video search and metadata - Channel videos extraction - Video details and engagement - Video comments analysis - Subtitle extraction **Y Combinator (3 tools)** - Company profiles - Founder search - Startup intelligence **SEC (2 tools)** - Company filings search - Document retrieval **Web Tools (3 tools)** - Webpage parsing - Sitemap extraction - Web search #### View All Tools Browse complete list of all available MCP tools ## Use Cases & Examples ### 1. Lead Enrichment Agent **Agent Prompt:** ``` "Research John Smith, VP of Sales at TechCorp. I need his LinkedIn profile, recent activity, and company information for a sales outreach." ``` **What the agent does:** 1. Uses `linkedin_user` to find John Smith's profile 2. Uses `linkedin_company` to get TechCorp details 3. Uses `linkedin_user_posts` to analyze recent activity 4. Compiles a comprehensive report with contact strategy ### 2. Competitor Monitoring Agent **Scheduled Scenario:** ``` Every Monday at 9 AM: - Extract last 7 days of posts from 3 competitor LinkedIn pages - Analyze engagement metrics and topics - Send summary report to Slack ``` **Make Workflow:** - **Trigger**: Schedule (weekly) - **Action**: AI Agent with MCP tools - **Output**: Formatted report to Slack/Email ### 3. Multi-Platform Research **Agent Prompt:** ``` "Find all mentions of 'AI automation' across LinkedIn, Twitter, and Reddit from the past week. Summarize trends and sentiment." ``` **Tools used:** - `search_linkedin_posts` - `search_twitter_posts` - `search_reddit_posts` - Agent analyzes and synthesizes findings ### 4. Recruitment Automation **Agent Prompt:** ``` "Find 10 Python developers in Berlin with ML experience who posted about AI in the last month. Provide their profiles and activity summary." ``` **Tools used:** - `search_linkedin_users` with filters - `linkedin_user` for detailed profiles - `linkedin_user_posts` for activity analysis ## Integration with Make Scenarios ### Basic Structure ``` ┌─────────────────┐ │ Webhook/Timer │ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ AI Agent │ │ (with MCP) │ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ Process Results │ │ (Parse/Format) │ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ Send to CRM/ │ │ Database/Slack │ └─────────────────┘ ``` ### Advanced Multi-Agent Setup ``` ┌──────────────────┐ │ Main Router │ └────────┬─────────┘ │ ┌─────────┴─────────┐ │ │ ▼ ▼ ┌───────────────┐ ┌───────────────┐ │ Research Agent│ │Analysis Agent │ │ (MCP Tools) │ │ (MCP Tools) │ └───────┬───────┘ └───────┬───────┘ │ │ └─────────┬─────────┘ │ ▼ ┌───────────────┐ │Report Generator│ └───────────────┘ ``` ## Troubleshooting #### Connection fails or times out **Possible causes:** - Invalid or expired API key - Incorrect URL format - Network connectivity issues **Solutions:** - Regenerate your Direct URL from Anysite dashboard - Ensure the URL includes `?api_key=YOUR_KEY` parameter - Check that your Anysite subscription is active - Verify your Make account has network access to external APIs #### MCP tools not available in agent **Possible causes:** - Connection not properly saved - MCP Unlimited plan not active **Solutions:** - Delete and recreate the MCP connection - Verify your MCP Unlimited subscription at [app.anysite.io](https://app.anysite.io) - Check that the connection appears in the Agent's MCP section - Try testing with a simple query like "Get LinkedIn profile for linkedin.com/in/williamhgates" #### Rate limits or quota errors **Note:** With MCP Unlimited, you should have no rate limits for MCP requests. **If you see errors:** - Verify you're on MCP Unlimited plan (not pay-per-use) - Check your subscription status in Anysite dashboard - Direct API calls (outside MCP) are billed separately - Contact support if issues persist #### Agent doesn't use MCP tools **Possible causes:** - System prompt doesn't encourage tool usage - Agent doesn't understand available tools **Solutions:** - Update system prompt to explicitly mention MCP tools - Provide examples of when to use specific tools - Test with direct tool names: "Use linkedin_user tool to get profile for..." - Ensure agent has proper permissions to use MCP #### Authentication errors **Error message:** "Invalid API key" or "Unauthorized" **Solutions:** - Your API key in the Direct URL may be incorrect - Go to [app.anysite.io](https://app.anysite.io) and copy a fresh Direct URL - Update the MCP connection in Make with the new URL - Ensure you copied the entire URL including the key parameter ## Security Best Practices #### Protect API Keys Never expose your Direct URL in: - Public repositories - Shared scenarios - Screenshots - Documentation Rotate keys regularly from Anysite dashboard. #### Agent Access Control Limit agent permissions: - Only give agents necessary tools - Use separate API keys for different agents - Monitor agent activity in Make logs - Set up alerts for unusual behavior #### Data Privacy Handle extracted data responsibly: - Follow GDPR and data protection laws - Don't store sensitive data unnecessarily - Implement data retention policies - Respect platform terms of service #### Monitor Usage Track your agent activity: - Review Make execution logs regularly - Check Anysite dashboard for usage patterns - Set up notifications for errors - Monitor API response times ## Benefits of Make + MCP Integration #### Unlimited Data Access With MCP Unlimited ($30/month), extract as much data as you need without worrying about request limits or overage charges. #### No-Code AI Agents Build sophisticated AI agents without writing code. Make's visual interface + MCP tools = powerful automation. #### Multi-Platform Intelligence Single agent can access LinkedIn, Instagram, Twitter, Reddit, and web data - unified intelligence gathering. #### Autonomous Workflows Set up agents that run on schedules or triggers, working 24/7 to gather insights and enrich data automatically. ## Next Steps #### View All MCP Tools Explore the complete list of 70+ tools available for your agents #### MCP Unlimited Plan Learn more about MCP Unlimited benefits and pricing #### Dashboard Manage your subscription and monitor usage #### Make.com Create your Make account and start building agents ## Support Need help with Make + MCP integration? #### Email Support Get technical assistance from our team #### Documentation Browse complete MCP documentation #### Community Join discussions and share use cases #### Status Page Check API status and uptime --- > **Ready to build intelligent agents?** Connect your Make account to Anysite MCP and start automating data extraction today! --- # n8n AI Agent Integration Anysite MCP + n8n AI Agent = Unlimited Data & Automation ## Overview n8n AI Agents combined with Anysite MCP Server creates a powerful platform for building autonomous AI agents with unlimited access to social media data. With MCP Unlimited plan, your n8n AI Agents can extract data from LinkedIn, Instagram, Twitter, Reddit, YouTube, SEC filings, Y Combinator database, and more without any request limits - all integrated into your n8n workflows. **Perfect for:** - Autonomous research agents in workflows - Lead enrichment and CRM automation - Competitor monitoring workflows - Multi-platform data aggregation pipelines - Scheduled intelligence gathering with n8n cron - AI-powered workflow automation > **MCP Unlimited Plan Required:** This integration requires an active MCP Unlimited subscription ($30/month) for unlimited data extraction. ## Download Pre-Built Workflow #### Download n8n AI Agent Workflow Click to download the ready-to-use n8n AI Agent workflow with Anysite MCP integration **Workflow includes:** - Pre-configured AI Agent with MCP connection - Example prompts and use cases - Error handling and logging - Ready-to-customize structure ## Prerequisites Before you begin, ensure you have: - Self-hosted n8n instance or [n8n.cloud](https://n8n.cloud) account - Anysite account with MCP Unlimited subscription - Basic understanding of n8n workflows and AI Agent node ## Step 1: Get Your MCP Connection URL First, obtain your Direct URL from the Anysite dashboard: #### Log in to Anysite Visit [app.anysite.io](https://app.anysite.io) and sign in to your account #### Navigate to MCP Integration Go to the **MCP Server Integration** section in your dashboard #### Copy Direct URL Anysite MCP Server Integration - Get Direct URL You'll see two connection options: - **OAuth URL**: `https://mcp.anysite.io/mcp` - **Direct URL**: `https://mcp.anysite.io/mcp?api_key=YOUR_KEY` Click **Copy** next to the **Direct URL** - this includes your API key for authentication. > **Security Notice:** Your Direct URL contains your API key. Keep it secure and never share it publicly or commit it to version control. ## Step 2: Configure MCP in n8n AI Agent Now connect the MCP Server to your n8n AI Agent node: #### Create or Open Workflow Open n8n and create a new workflow or open an existing one where you want to use the AI Agent. #### Add AI Agent Node 1. Click the **+** button to add a new node 2. Search for **"AI Agent"** or **"@n8n/n8n-nodes-langchain.agent"** 3. Add the AI Agent node to your canvas #### Configure MCP Connection Configure MCP in n8n AI Agent In the AI Agent node configuration: 1. Go to the **Tools** section 2. Click **Add Tool** 3. Select **MCP Tool** from the list 4. In the MCP Tool configuration: - **Server URL**: Paste your Direct URL from Step 1 ``` https://mcp.anysite.io/mcp?api_key=YOUR_API_KEY ``` - **Name**: "Anysite MCP" (or any descriptive name) 5. Click **Save** or **OK** #### Verify Connection After saving, the MCP tools should appear in your AI Agent's available tools list. You can verify by: - Looking at the Tools section - should show "5 tools available" - Testing with a simple prompt in n8n's test mode > **Connection successful!** Your n8n AI Agent can now use Anysite MCP tools to extract data from any supported platform within your workflows. ## Step 3: Configure Agent Behavior After connecting MCP, configure your AI Agent to use it effectively: ### System Prompt Example ``` You are an AI research agent integrated into an n8n workflow with access to Anysite MCP tools. Use these tools to extract data from LinkedIn, Instagram, Twitter, Reddit, YouTube, SEC, and Y Combinator. When the user requests information: 1. Identify the appropriate MCP tool(s) to use 2. Extract the data using the tools 3. Analyze and structure the information 4. Return JSON-formatted results for the workflow Available platforms: LinkedIn, Instagram, Twitter, Reddit, YouTube, SEC EDGAR, Y Combinator, Web Parser Always provide accurate, well-structured data that can be processed by subsequent workflow nodes. ``` ### Available Tools Your n8n AI Agent now has access to 70+ tools including: **LinkedIn (27 tools)** - Profile extraction and search - Company research and employee data - Post and comment analysis - LinkedIn messaging and chat - Job listings and groups **Instagram (8 tools)** - Profile data and metrics - Posts and reels extraction - Comments and likes analysis - Follower/following data **Twitter/X (5 tools)** - Profile information - Tweet extraction and search - User discovery **Reddit (5 tools)** - Post details and search - Comments extraction - User posts and comments **YouTube (5 tools)** - Video search and metadata - Channel videos extraction - Video details and engagement - Video comments analysis - Subtitle/transcript extraction **Y Combinator (3 tools)** - Company profiles by slug - Search YC companies - Search YC founders **SEC (2 tools)** - Search SEC EDGAR filings - Retrieve SEC documents **Web Tools (3 tools)** - Webpage parsing - Sitemap extraction - Web search #### View All Tools Browse complete list of all 115+ available MCP endpoints ## Use Cases & Examples ### 1. Lead Enrichment Workflow **n8n Workflow:** ``` Webhook → AI Agent (MCP) → Enrich Contact → Save to CRM ``` **Agent Prompt:** ``` "Research {{$json.email}} on LinkedIn. Find their profile, current company, job title, and recent activity. Return structured JSON." ``` **What the agent does:** 1. Uses `find_linkedin_user_email` to find profile 2. Uses `get_linkedin_profile` to extract details 3. Uses `get_linkedin_user_posts` for activity 4. Returns structured JSON to workflow **Workflow Output:** - Enriched contact data flows to next node - Automatic CRM update - Email personalization data ready ### 2. Competitor Monitoring Workflow **n8n Workflow:** ``` Schedule (Daily) → AI Agent (MCP) → Format Report → Send to Slack ``` **Agent Prompt:** ``` "Monitor competitor 'TechCorp' on LinkedIn: - Get last 7 days of posts - Extract engagement metrics - Identify trending topics Return JSON with summary." ``` **Tools used:** - `search_linkedin_companies` to find company - `get_linkedin_company_posts` for recent posts - Agent analyzes and structures findings **Automation:** - Runs daily at 9 AM - Automatic Slack notification - No manual intervention needed ### 3. Multi-Platform Research Pipeline **n8n Workflow:** ``` Manual Trigger → AI Agent (MCP) → Split Data → Parallel Processing → Merge Results → Output ``` **Agent Prompt:** ``` "Find all mentions of 'AI automation tools' across: - LinkedIn (posts from last week) - Twitter (tweets from last week) - Reddit (discussions from last month) - YouTube (videos from last 3 months) Analyze sentiment and provide summary." ``` **Tools used:** - `search_linkedin_posts` - `search_twitter_posts` - `search_reddit_posts` - `search_youtube_videos` - Agent synthesizes multi-platform insights ### 4. SEC Financial Intelligence Workflow **n8n Workflow:** ``` HTTP Request → AI Agent (MCP) → Extract Financial Data → Store in Database ``` **Agent Prompt:** ``` "Get latest 10-K and 10-Q filings for {{$json.company_name}}. Extract key financial metrics, risk factors, and MD&A summary." ``` **Tools used:** - `search_sec_companies` to find filings - `get_sec_document` to retrieve full document - Agent parses and extracts structured data **Use case:** Automated financial due diligence pipeline ### 5. Y Combinator Startup Research **n8n Workflow:** ``` Airtable Trigger → AI Agent (MCP) → YC Research → Update Airtable ``` **Agent Prompt:** ``` "Research YC company {{$json.slug}}: - Get company profile - Find founders and backgrounds - Identify batch and status Return structured data for database." ``` **Tools used:** - `get_yc_company` for company profile - `search_yc_founders` for team data - Structured output for Airtable update ## Integration with n8n Workflows ### Basic Workflow Structure **Typical n8n workflow with AI Agent:** 1. **Trigger** - Webhook, Schedule, or Manual trigger 2. **AI Agent** - Processes request using MCP tools 3. **Process Results** - Code or Set node to structure data 4. **Output** - Send to CRM, Database, Slack, or Email ### Multi-Agent Setup For complex workflows, use multiple AI Agents: - **Research Agent** - Gathers data using MCP tools - **Analysis Agent** - Processes and analyzes the data - **Merge & Report** - Combines insights and generates output ### Error Handling Implement robust error handling: - Use **IF node** after AI Agent to check success - Create separate paths for success and error cases - Log errors to database or send notifications - Implement retry logic for failed operations ## n8n-Specific Features ### 1. Expression Integration Access AI Agent results in n8n expressions: ```javascript // Get data from previous AI Agent node {{ $json.research_results }} // Access specific fields {{ $json.linkedin_profile.name }} {{ $json.company_data.employee_count }} ``` ### 2. Loop Through Results Process multiple items with AI Agent using n8n's loop functionality: 1. **Split In Batches** - Divide input data into manageable chunks 2. **AI Agent** - Process each item with MCP tools 3. **Aggregate Results** - Combine all processed data ### 3. Conditional Tool Usage ```javascript // In AI Agent system prompt "If the request is about LinkedIn, use linkedin_* tools. If it's about SEC filings, use search_sec_companies and get_sec_document. If it's about YouTube, use youtube_* tools. Always choose the most appropriate tool for the data source." ``` ### 4. JSON Output for Workflow Configure your agent to return structured JSON: ``` "Return your findings as JSON with this structure: { 'summary': 'Brief overview', 'data': { extracted data }, 'sources': ['tool1', 'tool2'], 'timestamp': 'ISO format' } " ``` This makes it easy to process results in subsequent n8n nodes. ## Workflow Templates ### Lead Enrichment Pipeline **Download:** Use the workflow from the link above **Flow:** 1. **Webhook** - Receives email/name/company 2. **AI Agent (MCP)** - Enriches with LinkedIn data 3. **Code Node** - Structures and validates data 4. **HubSpot/Salesforce** - Updates CRM 5. **Slack** - Notifies team ### Daily Competitor Report **Trigger:** Schedule node (daily 9 AM) **AI Agent Prompt:** ``` "Monitor these 3 competitors on LinkedIn: - Company A - Company B - Company C For each, get: - Last 5 posts - Engagement metrics - Employee growth trends Return JSON report." ``` **Output:** Formatted email with insights ### Social Media Intelligence **Trigger:** Manual trigger **AI Agent Prompt:** ``` "Research {{$json.topic}} across all platforms: - LinkedIn posts (last week) - Twitter mentions (last week) - Reddit discussions (last month) - YouTube videos (last 3 months) Analyze sentiment and trends." ``` **Output:** Comprehensive multi-platform report ## Troubleshooting #### MCP tools not available in AI Agent **Possible causes:** - MCP Server URL not configured correctly - MCP Unlimited plan not active - n8n AI Agent node version too old **Solutions:** - Verify Direct URL includes `?api_key=YOUR_KEY` parameter - Check MCP Unlimited subscription at [app.anysite.io](https://app.anysite.io) - Update n8n to latest version (MCP support added in recent releases) - Test MCP connection outside AI Agent first #### Connection fails or times out **Possible causes:** - Invalid or expired API key - Network connectivity issues from n8n instance - Firewall blocking MCP server **Solutions:** - Regenerate Direct URL from Anysite dashboard - Check n8n instance can reach `mcp.anysite.io` - Verify no firewall rules blocking outbound HTTPS - Test with curl from n8n server: `curl https://mcp.anysite.io/mcp?api_key=YOUR_KEY` #### Agent doesn't use MCP tools **Possible causes:** - System prompt doesn't mention tools - Agent not configured to use tools - Tool permissions not set **Solutions:** - Update system prompt to explicitly mention MCP tools - Ensure "Allow Agent to use tools" is enabled in node settings - Test with direct tool invocation: "Use get_linkedin_profile tool for..." - Check n8n AI Agent configuration has tools enabled #### Rate limits or quota errors **Note:** With MCP Unlimited, you should have no rate limits for MCP requests. **If you see errors:** - Verify you're on MCP Unlimited plan (not pay-per-use) - Check subscription status in Anysite dashboard - Direct API calls (outside MCP) are billed separately - Contact support if issues persist #### Workflow execution fails **Common issues:** - Agent response too large for n8n memory - Timeout on long-running research - JSON parsing errors **Solutions:** - Limit data extraction in agent prompt (e.g., "Get last 10 posts, not 100") - Increase timeout in AI Agent node settings - Use n8n Code node to validate and clean JSON output - Split large research into multiple agent calls ## Security Best Practices #### Protect API Keys Never expose your Direct URL in: - Shared workflows (export anonymized versions) - Public n8n templates - Screenshots or documentation - Version control systems Use n8n credentials store for sensitive data. #### Agent Access Control Limit agent permissions: - Only enable necessary tools - Use separate API keys for different workflows - Monitor execution logs in n8n - Set up error notifications #### Data Privacy Handle extracted data responsibly: - Follow GDPR and data protection laws - Don't store sensitive data unnecessarily - Implement data retention policies in workflows - Respect platform terms of service #### Monitor Usage Track your workflow activity: - Review n8n execution logs regularly - Check Anysite dashboard for usage patterns - Set up n8n error workflows - Monitor API response times ## Benefits of n8n + MCP Integration #### Unlimited Data Access With MCP Unlimited ($30/month), extract as much data as you need without worrying about request limits or overage charges. #### Workflow Automation Integrate AI intelligence directly into your automation workflows. Combine data extraction with processing, storage, and notifications. #### Multi-Platform Intelligence Single AI Agent can access LinkedIn, Instagram, Twitter, Reddit, YouTube, SEC, YC, and web data - unified intelligence gathering in one workflow. #### Self-Hosted Control Run n8n on your infrastructure with full control over data, security, and compliance while accessing unlimited external data via MCP. #### Open Source Flexibility n8n's open-source nature allows complete customization of workflows, data processing, and integration patterns. #### Visual Workflow Builder Build complex AI-powered workflows visually without coding. Connect MCP intelligence to 400+ n8n integrations. ## Advanced Integration Patterns ### 1. Multi-Agent Research Pipeline Use multiple AI Agents in sequence, each specialized: ``` Trigger → Agent 1: LinkedIn Research (MCP) → Agent 2: Twitter Sentiment (MCP) → Agent 3: Synthesis & Analysis → Send Report ``` Each agent focuses on specific platform, final agent combines insights. ### 2. Conditional Data Enrichment ``` Input Data → IF node (has LinkedIn URL?) → Yes: AI Agent extracts LinkedIn data → No: AI Agent searches by email/name → Merge results → Continue workflow ``` ### 3. Feedback Loop with Memory ``` Get Task → AI Agent (MCP): Initial Research → Store in n8n Database → IF: Need more data? → Yes: AI Agent (MCP): Deep Dive → Loop back → Final Output ``` Agent uses MCP tools iteratively until satisfied with data quality. ### 4. Real-Time Monitoring ``` Schedule (Every hour) → AI Agent: Check for new posts/filings → IF: Found new content? → Process and alert → Update tracking database → Sleep until next run ``` ## n8n Workflow Best Practices #### Optimize Agent Prompts for n8n **Do:** - Request JSON output format for easy processing - Specify exact field names needed downstream - Set clear data limits (e.g., "Get 10 posts, not all") - Include error handling instructions **Example:** ``` "Search LinkedIn for 'data engineers' in Berlin. Return JSON array with exactly these fields: - name, title, company, profile_url Limit to 20 results." ``` #### Handle Large Datasets **Strategies:** - Use pagination in agent prompts - Split large extractions into multiple agent calls - Process results in batches using Loop node - Store intermediate results in n8n database - Use n8n's SplitInBatches node for chunking #### Error Recovery **Implement retry logic:** - Wrap AI Agent in Error Trigger node - Retry failed executions automatically - Log errors to database/Slack - Fallback to manual review queue - Use n8n's built-in error workflows #### Performance Optimization **Tips:** - Cache frequently accessed data in n8n variables - Use AI Agent for intelligence, not simple lookups - Parallel execution for independent research tasks - Optimize MCP tool timeouts (default 300s often enough) - Use n8n Queue mode for high-volume processing ## Next Steps #### Download Workflow Template Get the pre-built n8n workflow to start immediately #### View All MCP Tools Explore the complete list of 70+ tools available for your agents #### MCP Unlimited Plan Learn more about MCP Unlimited benefits and pricing #### Dashboard Manage your subscription and monitor usage #### n8n Documentation Learn more about n8n workflow automation #### n8n Community Join n8n community for workflow ideas and support ## Support Need help with n8n + MCP integration? #### Email Support Get technical assistance from our team #### MCP Documentation Browse complete MCP documentation #### n8n Nodes Also check our n8n community nodes for direct API integration #### GitHub Access workflow templates and examples --- > **Ready to supercharge your n8n workflows?** Connect Anysite MCP to your AI Agents and unlock unlimited data extraction with the power of automation! --- # MCP Unlimited Plan ## The First Unlimited Plan for AI Agents **Unlimited access to any website's data through Remote MCP Server** MCP Unlimited is a game-changing offer for AI developers and automation builders. For the first time ever, get **unlimited access** to all 1,100+ Anysite endpoints across 600+ data sources without counting credits or requests. Connect Claude Desktop, Cursor, n8n, or any MCP-compatible AI agent — and extract structured data without limits. > **Important:** This plan applies only to Remote MCP Server. Direct API requests are billed separately. ## Pricing #### MCP Unlimited **$30/month** Unlimited MCP requests • 3,600+ endpoints • 600+ data sources • No request limits ## What's Included ### 3,600+ Endpoints Across 600+ Data Sources | Platform | Endpoints | Capabilities | |----------|-----------|--------------| | **LinkedIn** | 35 | Profiles, companies, posts, comments, reactions, skills, experience, jobs, search | | **ProductHunt** | 23 | Products, launches, makers, topics, collections | | **YouTube** | 14 | Video search, channel videos, video details, comments, subtitles | | **Reddit** | 11 | Posts, comments, user profiles, user posts and comments | | **Google** | 10 | Web search, news, maps, related results | | **Instagram** | 8 | Profiles, posts, comments, likes, reels, followers | | **Twitter/X** | 4 | Profiles, tweets, post and user search | | **Y Combinator** | 3 | YC company data, founder search, startup intelligence | | **SEC** | 2 | Company filings, document search, financial research | | **Web Parser** | 2 | Any webpage parsing, sitemap extraction | | **DuckDuckGo** | 1 | Web search results | | **Other Sources** | ~70 | Amazon, Facebook, TikTok, Yahoo, Crunchbase, Companies House, GitHub, and 20+ more | #### View All Endpoints Browse complete list of all 1,100+ available MCP endpoints ### Platform Compatibility MCP Unlimited works with all MCP-compatible clients: #### Claude Desktop OAuth connection in 60 seconds Native integration with permission controls #### Claude Code CLI integration for developers Perfect for scripts and automation #### Cursor Native MCP support AI coding assistant integration #### n8n MCP Client node No-code AI agent workflows ## Skills for Claude Desktop With MCP Unlimited, you get access to ready-made Skills — autonomous AI workflows that execute complex tasks in one click. ### Person Analyzer Skill Deep analysis of individuals for sales, partnerships, and recruiting: #### Person Analyzer **Example:** "Analyze John Smith, CTO at TechCorp, to prepare for a sales call" **What it does automatically:** - Extracts complete LinkedIn profile (experience, education, skills) - Analyzes 50-100 recent posts and comments - Researches company and positioning - Finds web mentions and publications - Creates approach strategy and conversation topics **Three depth levels:** #### Quick (1-5 min) - Profile overview - 10-20 posts analysis - Basic company info - Quick assessment #### Standard (5-10 min) - Full profile details - 20-50 posts analysis - Company research - Strategic recommendations #### Deep Dive (10-20 min) - 100+ posts analysis - Deep web research - Comprehensive company intel - Detailed contact strategy ### Competitor Analyzer Skill Systematic framework for competitive intelligence: #### Competitor Analyzer **Example:** "Analyze Apify as a competitor — focus on pricing and positioning" **Multi-source intelligence gathering:** - Company LinkedIn and key employees - Twitter/X and Reddit for sentiment analysis (800+ data points) - Web scraping of website, documentation, blog - Glassdoor and employee reviews - Cross-platform authenticity assessment **Perfect for:** Market research, battle card creation, M&A due diligence, strategic planning #### Download Skills Get Person Analyzer and Competitor Analyzer skills for Claude Desktop ## n8n + MCP Client = No-Code AI Agents Use the **MCP Client node** in n8n to connect Anysite to any AI agent. This unlocks unlimited automation possibilities. ### How It Works #### Add MCP Client node Add MCP Client node to your n8n workflow #### Configure connection Set endpoint: `https://mcp.anysite.io/mcp` with your API key #### Select tools Choose specific tools or include all 3,600+ endpoints #### Connect to AI Link to OpenAI, Anthropic, or any other AI agent node ### Example Workflows #### Lead Enrichment Pipeline **Flow:** Webhook → MCP Client (LinkedIn) → AI Agent → CRM Receive email with lead's name → agent finds LinkedIn profile → enriches with data → adds to Salesforce #### Competitor Monitoring **Flow:** Schedule (weekly) → MCP Client (LinkedIn + Twitter) → AI Agent → Slack Every Monday, agent collects competitor posts, analyzes themes and engagement, sends report to your channel #### Multi-Platform Research **Flow:** Trigger → Split → [LinkedIn] + [Instagram] + [Reddit] → Merge → AI Analysis Parallel data collection from all platforms, merging, and comprehensive analysis by single agent #### Recruitment Automation **Flow:** Job Description → MCP Client (search_linkedin_users) → AI Scoring → Google Sheets Agent searches candidates by criteria, evaluates fit, creates shortlist automatically #### Learn More Complete guide to n8n + MCP integration ## Use Cases ### Sales & Lead Generation **Example query:** ``` Find all VPs of Engineering at fintech companies in Berlin with 50-200 employees who posted about AI in the last month ``` One request to Claude — get qualified leads with complete profiles, activity analysis, and approach recommendations. **No limits on number of profiles.** ### Competitive Intelligence **Example query:** ``` Analyze the last 50 posts from Salesforce and HubSpot on LinkedIn. What topics are they pushing? How is the audience responding? ``` Automatic competitor content collection, engagement analysis, trend identification — all in one AI conversation. ### Recruitment & Talent Research **Example query:** ``` Find Python developers with ML experience who are active on Reddit in machine learning communities ``` Multi-platform search: LinkedIn for professional background, Reddit for evaluating technical expertise and cultural fit. ### Brand Monitoring Set up n8n workflow with AI agent — receive automatic reports on brand mentions across Twitter and Reddit with sentiment analysis. ### LinkedIn Outreach Automation **Example query:** ``` Send personalized messages to all Python developers in Berlin who posted about AI in the last week. Include our company deck as attachment. ``` With messaging tools, you can fully automate LinkedIn outreach: search prospects, send connection requests, send follow-up messages with attachments, monitor responses. ### Video Content Research **Example query:** ``` Find top 20 YouTube videos about "machine learning tutorial" from 2024, extract their subtitles, and analyze which topics are most covered ``` YouTube tools enable content research, competitor analysis, and SEO insights through video data and transcripts. ### Financial Intelligence **Example query:** ``` Get Tesla's latest 10-K and 10-Q SEC filings, extract key financial metrics and risk factors ``` SEC tools provide access to official company filings for investment research and due diligence. ### AI Agent Development Embed web data into your agents without the headache of proxies, captchas, and blocks. Anysite handles all infrastructure problems — you focus on the logic. ## Cost Comparison Why MCP Unlimited makes financial sense: | Scenario | Pay-per-use (approx.) | MCP Unlimited | |----------|----------------------|---------------| | 1,000 LinkedIn profiles/month | ~$50-100 | **$30** | | 500 profiles + 2,000 posts | ~$80-150 | **$30** | | Unlimited research | Unpredictable | **$30** | > **Fixed cost = predictable budget.** No surprises at the end of the month. ## Getting Started #### Sign up at Anysite Create account at [anysite.io](https://app.anysite.io) #### Try free trial Start with 100 free requests to test the platform #### Upgrade to MCP Unlimited Subscribe for $30/month for unlimited access #### Connect your tools Install MCP Server in Claude Desktop, Claude Code, or n8n #### Start building Use Skills, create workflows, or integrate with your AI agents ## Installation Guides #### Claude Desktop OAuth setup with GUI #### Claude Code CLI integration guide #### n8n Integration MCP Client node setup #### Local Server Self-hosted option ## Frequently Asked Questions #### What's the difference between MCP Unlimited and Direct API? **MCP Unlimited ($30/month):** - Unlimited requests through Remote MCP Server - For AI agents (Claude Desktop, Cursor, n8n) - Natural language interface - Skills and workflows included **Direct API (pay-per-use):** - REST API requests billed separately - For custom integrations - Programmatic access - Full control over requests #### Can I use both MCP Unlimited and Direct API? Yes! MCP Unlimited covers only Remote MCP Server requests. Direct API calls are billed separately per usage. #### Is there really no request limit? Correct! MCP Unlimited has no request limits for Remote MCP Server usage. Use as much as you need for $30/month. #### What platforms are supported? All MCP-compatible clients: - Claude Desktop (OAuth) - Claude Code (CLI) - Cursor IDE - n8n (MCP Client node) - Any other MCP-compatible tool #### Do Skills require MCP Unlimited? Skills work with any Anysite subscription, but MCP Unlimited removes limits on data extraction during skill execution. #### Can I cancel anytime? Yes, you can cancel your subscription anytime from the dashboard. No long-term commitments. ## Support #### Documentation Complete MCP Server documentation #### Get Support Contact our support team #### API Dashboard Manage your subscription #### Community Join our GitHub community --- **Ready to unlock unlimited AI-powered data extraction?** #### Get MCP Unlimited - $30/month Start with free trial, upgrade anytime --- # Instagram Node ## Overview The Anysite Instagram node enables Instagram data extraction within your n8n workflows. Get user profiles, analyze posts, track hashtags, and monitor engagement metrics for social media analysis. ## Node Configuration ### Authentication Select your Anysite API credentials from the dropdown or create new ones. ### Available Operations #### Get User Profile Extract detailed Instagram user profile information. **Parameters:** - **Username** (required): Instagram username (without @) - **Include Posts**: Whether to include recent posts - **Post Limit**: Number of recent posts to include (1-50) **Example Output:** ```json { "user": { "id": "instagram123", "username": "travel_blogger", "displayName": "Sarah's Adventures", "bio": "Travel enthusiast ✈️ | 50+ countries | Photography tips 📸", "followers": 125000, "following": 800, "posts": 1250, "isVerified": false, "isPrivate": false, "profileImageUrl": "https://instagram.com/profiles/...", "website": "https://sarahtravels.com", "category": "Travel" } } ``` #### Get User Posts Extract posts from a specific Instagram user. **Parameters:** - **Username** (required): Instagram username - **Post Count**: Number of posts to retrieve (1-50) - **Include Stories**: Whether to include story highlights - **Media Type**: "all", "photo", "video", "carousel" **Example Output:** ```json { "posts": [ { "id": "post456", "shortcode": "ABC123def", "caption": "Amazing sunset in Bali! 🌅 #sunset #bali #travel", "mediaType": "photo", "mediaUrl": "https://instagram.com/images/...", "timestamp": "2024-08-26T18:30:00Z", "likes": 2800, "comments": 145, "hashtags": ["#sunset", "#bali", "#travel"], "mentions": ["@bali_tourism"], "location": { "name": "Tanah Lot, Bali", "id": "location789" } } ] } ``` #### Search Users Search for Instagram users by username or bio keywords. **Parameters:** - **Query** (required): Search terms for finding users - **Category**: User category filter (optional) - **Verified Only**: Only return verified accounts - **Limit**: Maximum results to return (1-50) **Example Output:** ```json { "users": [ { "id": "user789", "username": "food_critic_nyc", "displayName": "NYC Food Reviews", "followers": 85000, "isVerified": true, "category": "Food & Drink", "bio": "NYC's best restaurants 🍽️ | Food critic | DM for collabs" } ] } ``` #### Analyze Post Get detailed analytics for a specific Instagram post. **Parameters:** - **Post URL** (required): Instagram post URL - **Include Comments**: Whether to include comment analysis - **Comment Limit**: Number of comments to analyze **Example Output:** ```json { "post": { "id": "post123", "engagement": { "likes": 3200, "comments": 189, "saves": 245, "shares": 67, "engagementRate": 4.2 }, "audience": { "topCountries": ["US", "UK", "Canada"], "ageGroups": { "18-24": 35, "25-34": 45, "35-44": 20 } }, "performance": { "reach": 85000, "impressions": 125000, "profileVisits": 450 } } } ``` ## Workflow Examples ### Influencer Research #### Find Influencers Search for Instagram users in your niche with high engagement rates. #### Analyze Profiles Get detailed profile information including follower count, engagement, and content themes. #### Content Analysis Analyze recent posts to ensure brand alignment and authentic engagement. #### Contact Database Build a database of qualified influencers with contact information and collaboration notes. **Example Workflow:** ```json { "nodes": [ { "name": "Search Fashion Influencers", "type": "@horizondatawave/n8n-nodes-anysite.Instagram", "operation": "searchUsers", "parameters": { "query": "fashion blogger style influencer", "category": "Fashion", "limit": 50 } }, { "name": "Filter by Followers", "type": "n8n-nodes-base.filter", "parameters": { "conditions": [ { "field": "followers", "operation": "greaterThan", "value": 10000 }, { "field": "followers", "operation": "lessThan", "value": 500000 } ] } }, { "name": "Get Recent Posts", "type": "@horizondatawave/n8n-nodes-anysite.Instagram", "operation": "getUserPosts", "parameters": { "username": "={{ $json.username }}", "postCount": 12, "mediaType": "all" } }, { "name": "Calculate Engagement", "type": "n8n-nodes-base.function", "parameters": { "functionCode": ` const avgLikes = items[0].json.posts.reduce((sum, post) => sum + post.likes, 0) / items[0].json.posts.length; const engagementRate = (avgLikes / items[0].json.followers) * 100; return [{ json: { ...items[0].json, avgLikes, engagementRate } }]; ` } } ] } ``` ### Brand Monitoring Track mentions of your brand across Instagram: 1. **Hashtag Monitoring** - Track branded hashtags and campaigns 2. **Mention Detection** - Find posts mentioning your brand handle 3. **User-Generated Content** - Discover customers posting about your products 4. **Competitor Analysis** - Monitor competitor social media activity 5. **Engagement Tracking** - Measure campaign performance and reach ### Content Strategy Optimize your content strategy based on competitor analysis: 1. **Top Performers** - Find highest-performing posts in your niche 2. **Hashtag Analysis** - Identify trending and effective hashtags 3. **Posting Patterns** - Analyze optimal posting times and frequency 4. **Content Types** - Determine which content formats perform best 5. **Audience Insights** - Understand your target audience preferences ## Advanced Analytics ### Engagement Analysis Calculate detailed engagement metrics: ```javascript // Comprehensive engagement calculation { "engagementMetrics": { "rate": "={{ (($json.likes + $json.comments) / $json.followers * 100).toFixed(2) }}%", "likesToCommentsRatio": "={{ ($json.likes / Math.max($json.comments, 1)).toFixed(1) }}", "avgLikesPerPost": "={{ ($json.totalLikes / $json.postCount).toFixed(0) }}", "viralityScore": "={{ ($json.likes > ($json.followers * 0.05) ? 'High' : 'Normal') }}" } } ``` ### Content Performance Analyze which content types perform best: ```json { "name": "Analyze Content Types", "type": "n8n-nodes-base.function", "parameters": { "functionCode": ` const posts = items.map(item => item.json); const byType = posts.reduce((acc, post) => { acc[post.mediaType] = acc[post.mediaType] || []; acc[post.mediaType].push(post); return acc; }, {}); const analysis = Object.entries(byType).map(([type, typePosts]) => ({ type, count: typePosts.length, avgLikes: typePosts.reduce((sum, p) => sum + p.likes, 0) / typePosts.length, avgComments: typePosts.reduce((sum, p) => sum + p.comments, 0) / typePosts.length })); return [{ json: { contentAnalysis: analysis } }]; ` } } ``` ## Hashtag Research ### Trending Hashtags Find trending hashtags in your niche: ```json { "name": "Extract Hashtags", "type": "n8n-nodes-base.function", "parameters": { "functionCode": ` const allHashtags = items.flatMap(item => item.json.posts ? item.json.posts.flatMap(post => post.hashtags || []) : [] ); const hashtagCount = allHashtags.reduce((acc, tag) => { acc[tag] = (acc[tag] || 0) + 1; return acc; }, {}); const trending = Object.entries(hashtagCount) .sort(([,a], [,b]) => b - a) .slice(0, 20) .map(([hashtag, count]) => ({ hashtag, count })); return [{ json: { trendingHashtags: trending } }]; ` } } ``` ### Hashtag Performance Analyze hashtag effectiveness: ```javascript // Hashtag performance metrics { "hashtagAnalysis": { "totalHashtags": "={{ $json.hashtags.length }}", "avgEngagement": "={{ ($json.likes + $json.comments) / Math.max($json.hashtags.length, 1) }}", "topHashtag": "={{ $json.hashtags[0] }}", "nicheTags": "={{ $json.hashtags.filter(tag => tag.includes('fashion') || tag.includes('style')).length }}" } } ``` ## Error Handling ### Common Issues #### Private Account **Error:** `403 - Account is private` **Solution:** - Skip private accounts in bulk operations - Focus on public profiles for analysis - Maintain a list of accessible accounts #### Account Not Found **Error:** `404 - User not found` **Solution:** - User may have changed username or deleted account - Update your user database regularly - Handle missing users gracefully in workflows #### Rate Limit Reached **Error:** `429 - Too many requests` **Solution:** - Add delays between requests (recommended: 2-3 seconds) - Implement exponential backoff - Monitor your API usage and plan accordingly ### Robust Request Handling ```json { "name": "Instagram with Retry", "type": "@horizondatawave/n8n-nodes-anysite.Instagram", "continueOnFail": true, "retryOnFail": true, "maxTries": 3, "waitBetweenTries": 4000, "parameters": { "operation": "getUserProfile", "username": "{{ $json.username }}" } } ``` ## Data Processing ### Profile Scoring Score influencer profiles based on multiple factors: ```javascript // Influencer scoring algorithm { "influencerScore": { "followersScore": "={{ Math.min($json.followers / 10000, 10) }}", "engagementScore": "={{ ($json.engagementRate > 3 ? 10 : $json.engagementRate * 3.33) }}", "contentScore": "={{ ($json.posts.length > 100 ? 10 : $json.posts.length / 10) }}", "verificationBonus": "={{ $json.isVerified ? 2 : 0 }}", "totalScore": "={{ ($json.followersScore + $json.engagementScore + $json.contentScore + $json.verificationBonus) / 3.2 }}" } } ``` ### Audience Analysis Analyze follower demographics and interests: ```json { "name": "Analyze Audience", "type": "n8n-nodes-base.openAi", "parameters": { "operation": "analyze", "prompt": "Based on this Instagram profile bio and recent posts, what audience demographics and interests would this account attract? Bio: {{ $json.bio }}, Recent posts: {{ $json.recentPosts.map(p => p.caption).join(' | ') }}" } } ``` ## Integration Examples ### CRM Integration Add qualified influencers to your CRM: ```json { "name": "Add to CRM", "type": "n8n-nodes-base.hubspot", "parameters": { "operation": "create", "resource": "contact", "data": { "firstname": "={{ $json.displayName.split(' ')[0] }}", "lastname": "={{ $json.displayName.split(' ').slice(1).join(' ') }}", "instagram_handle": "={{ $json.username }}", "follower_count": "={{ $json.followers }}", "engagement_rate": "={{ $json.engagementRate }}", "category": "={{ $json.category }}" } } } ``` ### Content Calendar Build content calendar based on competitor analysis: ```json { "name": "Generate Content Ideas", "type": "n8n-nodes-base.openAi", "parameters": { "operation": "generate", "prompt": "Based on these high-performing Instagram posts, generate 5 content ideas for our brand: {{ JSON.stringify($json.topPosts) }}" } } ``` ### Report Generation Create Instagram analytics reports: ```json { "name": "Generate Report", "type": "n8n-nodes-base.googleDocs", "parameters": { "operation": "create", "title": "Instagram Analysis Report - {{ new Date().toLocaleDateString() }}", "content": ` # Instagram Analysis Report ## Top Performers {{ $json.topInfluencers.map(inf => \`- \${inf.username}: \${inf.followers} followers, \${inf.engagementRate}% engagement\`).join('\\n') }} ## Trending Hashtags {{ $json.trendingHashtags.map(tag => \`- \${tag.hashtag} (\${tag.count} uses)\`).join('\\n') }} ## Recommendations {{ $json.recommendations }} ` } } ``` ## Performance Optimization ### Bulk Operations Process multiple accounts efficiently: ```json { "name": "Batch Process Users", "type": "n8n-nodes-base.splitInBatches", "parameters": { "batchSize": 10, "options": { "reset": false } } } ``` ### Data Caching Cache profile data to reduce API calls: ```javascript // Simple caching mechanism { "name": "Cache Profile Data", "type": "n8n-nodes-base.function", "parameters": { "functionCode": ` const cacheKey = \`profile_\${items[0].json.username}\`; const cached = $('Cache').last()?.json?.[cacheKey]; if (cached && Date.now() - cached.timestamp < 3600000) { // 1 hour cache return [{ json: cached.data }]; } // Store in cache for next time const cacheData = { [cacheKey]: { data: items[0].json, timestamp: Date.now() } }; return [ { json: items[0].json }, { json: cacheData, pairedItem: { item: 0, input: 0 } } ]; ` } } ``` ## Best Practices ### Ethical Data Collection - Respect user privacy and Instagram's terms of service - Only collect publicly available data - Implement proper rate limiting - Store data securely and delete when no longer needed ### Performance Tips - Use batch processing for large datasets - Implement caching for frequently accessed profiles - Add appropriate delays between requests - Monitor your API usage to stay within limits ## Next Steps - [LinkedIn Node](/docs/n8n-nodes/linkedin-node) - LinkedIn data extraction - [Twitter Node](/docs/n8n-nodes/twitter-node) - Twitter/X monitoring - [Reddit Node](/docs/n8n-nodes/reddit-node) - Reddit discussion analysis - [Workflows](/docs/n8n-nodes/workflows) - Pre-built workflow templates --- # n8n Nodes Installation ## Overview The Anysite n8n nodes package provides powerful social media data extraction capabilities directly within your n8n workflows. Extract data from LinkedIn, Twitter, Reddit, Instagram, and websites with ease. ## Prerequisites - n8n instance (self-hosted or cloud) - Node.js 18.10 or higher - Anysite API account and credentials ## Installation Methods ### Method 1: Community Nodes (Recommended) #### Access n8n Settings In your n8n instance, go to **Settings** → **Community Nodes** #### Install Package Enter the package name: `n8n-nodes-anysite` Click **Install** and wait for the installation to complete #### Restart n8n Restart your n8n instance to load the new nodes ### Method 2: Manual Installation #### Install via npm ```bash npm install n8n-nodes-anysite ``` #### Configure n8n Add the package to your n8n configuration: ```bash export N8N_CUSTOM_EXTENSIONS=n8n-nodes-anysite ``` #### Restart n8n ```bash n8n start ``` ## API Credentials Setup #### Get Your API Key 1. Visit [anysite.io](https://app.anysite.io/register) 2. Create your account and log in 3. Navigate to **Account Settings** → **API Keys** 4. Generate a new API key #### Create Credentials in n8n 1. In n8n, go to **Credentials** 2. Click **Create New** 3. Search for "Anysite API" 4. Enter your API key 5. Test the connection 6. Save the credentials ## Available Nodes After installation, you'll have access to these nodes: #### Anysite LinkedIn User search, profile retrieval, post analysis, company data #### Anysite Twitter User profiles, tweet search, timeline data #### Anysite Reddit Post search, comment extraction, subreddit data #### Anysite Instagram User profiles, posts, stories, comments #### Anysite Web Parser Website scraping, content extraction, screenshots ## First Workflow Let's create a simple workflow to test your installation: #### Create New Workflow 1. In n8n, click **Create Workflow** 2. Add a **Schedule Trigger** node #### Add Anysite LinkedIn Node 1. Click the **+** button after the trigger 2. Search for "Anysite LinkedIn" 3. Select the node and configure it: - **Operation**: Search Users - **Credentials**: Select your Anysite credentials - **Search Query**: "marketing manager" - **Limit**: 5 #### Test the Workflow 1. Click **Test Workflow** 2. You should see LinkedIn user data in the output ## Verification To verify your installation is working correctly: 1. **Check Node Availability**: All Anysite nodes should appear in the nodes panel 2. **Test Credentials**: Use any Anysite node with your credentials 3. **Run Sample Workflow**: Execute a simple data extraction workflow ## Troubleshooting #### Nodes not appearing after installation - Ensure n8n has been fully restarted after installation - Check that Node.js version is 18.10 or higher - Verify the package was installed correctly: `npm list n8n-nodes-anysite` #### Credential authentication errors - Verify your API key is correct and active - Check that your Anysite account has API access - Ensure there are no extra spaces in the API key - Test the API key directly with curl or Postman #### Package installation fails - Check Node.js version compatibility - Clear npm cache: `npm cache clean --force` - Try manual installation method - Check n8n logs for detailed error messages #### Rate limit or quota errors - Check your API usage limits in the Anysite dashboard - Implement delays between requests in your workflows - Consider upgrading your subscription plan if needed ## Next Steps - [Explore LinkedIn Node capabilities](/docs/n8n-nodes/linkedin-node) - [Learn about workflow patterns](/docs/n8n-nodes/workflows) - [View example automations](/docs/n8n-nodes/workflows) > The Anysite Web Parser node is currently in beta. Some features may be limited or subject to change. --- # LinkedIn Node ## Overview The Anysite LinkedIn node provides comprehensive LinkedIn data extraction capabilities within your n8n workflows. Search for users, companies, posts, and extract detailed profile information. ## Node Configuration ### Authentication Select your Anysite API credentials from the dropdown or create new ones. ### Available Operations #### Search Users Search for LinkedIn users and profiles. **Parameters:** - **Query** (required): Search terms for finding users - **Filters**: Location, industry, company filters - **Limit**: Maximum results to return (1-100) **Example Output:** ```json { "users": [ { "id": "user123", "name": "John Smith", "headline": "Senior Software Engineer at Tech Corp", "location": "San Francisco, CA", "profileUrl": "https://linkedin.com/in/johnsmith", "followers": 2500, "connections": 500 } ] } ``` #### Get User Profile Get detailed profile information for a specific user. **Parameters:** - **User ID** (required): LinkedIn user identifier - **Include Posts**: Whether to include recent posts - **Post Limit**: Number of recent posts to include **Example Output:** ```json { "profile": { "id": "user123", "name": "John Smith", "headline": "Senior Software Engineer at Tech Corp", "summary": "Experienced engineer with 8+ years...", "experience": [ { "company": "Tech Corp", "position": "Senior Software Engineer", "duration": "2022 - Present", "description": "Lead backend development..." } ], "education": [...], "skills": ["Python", "AWS", "Kubernetes"], "recentPosts": [...] } } ``` #### Search Companies Search for LinkedIn companies and organizations. **Parameters:** - **Query** (required): Company search terms - **Industry Filter**: Specific industry to filter by - **Size Filter**: Company size range - **Location**: Geographic location filter **Example Output:** ```json { "companies": [ { "id": "company456", "name": "Tech Corp Inc", "industry": "Computer Software", "size": "1001-5000 employees", "location": "San Francisco, CA", "website": "https://techcorp.com", "followers": 125000 } ] } ``` #### Get User Posts Extract posts and activity from a LinkedIn user. **Parameters:** - **User ID** (required): LinkedIn user identifier - **Post Limit**: Number of posts to retrieve - **Include Reactions**: Whether to include reaction counts **Example Output:** ```json { "posts": [ { "id": "post789", "text": "Excited to announce our new product launch...", "publishedAt": "2024-08-26T10:00:00Z", "reactions": { "likes": 45, "comments": 12, "reposts": 8 }, "mediaUrls": ["https://example.com/image.jpg"] } ] } ``` ## Workflow Examples ### Lead Generation Workflow #### Search for Prospects Use the LinkedIn Search Users operation to find potential leads based on job titles, companies, or industries. #### Extract Detailed Profiles For each prospect found, use Get User Profile to gather comprehensive information including work history, skills, and recent activity. #### Filter and Score Use n8n's built-in nodes to filter prospects based on criteria and assign lead scores. #### Store Results Save qualified leads to your CRM, database, or Google Sheets using n8n's integration nodes. **Example Workflow:** ```json { "nodes": [ { "name": "LinkedIn Search", "type": "@horizondatawave/n8n-nodes-anysite.LinkedIn", "operation": "searchUsers", "parameters": { "query": "marketing manager", "filters": { "location": "New York", "industry": "Technology" }, "limit": 50 } }, { "name": "Get Full Profiles", "type": "@horizondatawave/n8n-nodes-anysite.LinkedIn", "operation": "getUserProfile", "parameters": { "userId": "={{ $json.id }}", "includePosts": true, "postLimit": 5 } }, { "name": "Filter Qualified Leads", "type": "n8n-nodes-base.filter", "parameters": { "conditions": [ { "field": "experience[0].company", "operation": "notEqual", "value": "Competitor Corp" } ] } }, { "name": "Save to Google Sheets", "type": "n8n-nodes-base.googleSheets", "parameters": { "operation": "append", "sheetId": "your-sheet-id", "values": [ "={{ $json.name }}", "={{ $json.headline }}", "={{ $json.location }}", "={{ $json.profileUrl }}" ] } } ] } ``` ### Content Research Workflow Track what industry leaders are posting about: 1. **Search Industry Leaders** - Find thought leaders in your industry 2. **Get Recent Posts** - Extract their latest content and engagement metrics 3. **Analyze Trends** - Use AI nodes to identify trending topics and themes 4. **Generate Content Ideas** - Create content suggestions based on analysis 5. **Schedule Notifications** - Alert your team about important trends ### Competitor Analysis Workflow Monitor competitor activity and employee movements: 1. **Track Competitor Employees** - Search for employees at competitor companies 2. **Monitor Job Changes** - Detect when key employees leave or join competitors 3. **Analyze Company Updates** - Track competitor company page updates and announcements 4. **Sentiment Analysis** - Analyze employee sentiment through their posts 5. **Generate Reports** - Create weekly competitor intelligence reports ## Error Handling ### Common Errors #### Rate Limit Exceeded **Error:** `429 - Rate limit exceeded` **Solution:** - Add delay nodes between requests - Implement retry logic with exponential backoff - Consider upgrading your API plan #### User Not Found **Error:** `404 - User not found` **Solution:** - Verify the LinkedIn user ID is correct - Check if the profile is private or deactivated - Handle missing users gracefully in your workflow #### Invalid Search Query **Error:** `400 - Invalid search parameters` **Solution:** - Ensure search query is not empty - Verify filter parameters are valid - Check location and industry filter formats ### Retry Logic Example ```json { "name": "LinkedIn with Retry", "type": "@horizondatawave/n8n-nodes-anysite.LinkedIn", "retryOnFail": true, "maxTries": 3, "waitBetweenTries": 2000, "parameters": { "operation": "searchUsers", "query": "software engineer" } } ``` ## Rate Limiting Best Practices ### Request Spacing Add delays between bulk operations: ```json { "name": "Delay Between Requests", "type": "n8n-nodes-base.wait", "parameters": { "amount": 1, "unit": "seconds" } } ``` ### Batch Processing Process large datasets in smaller batches: ```json { "name": "Split Into Batches", "type": "n8n-nodes-base.splitInBatches", "parameters": { "batchSize": 10 } } ``` ## Advanced Features ### Dynamic Filtering Use expressions to create dynamic search filters: ```javascript // Dynamic location filter based on previous data { "location": "={{ $json.companyHeadquarters }}", "industry": "={{ $json.targetIndustry }}" } ``` ### Data Enrichment Combine LinkedIn data with other sources: ```json { "workflow": [ "LinkedIn Search → Get Profiles", "Email Finder → Enrich with Contacts", "Company Data → Add Firmographic Info", "CRM Integration → Update Lead Records" ] } ``` ### Content Analysis Use AI nodes to analyze LinkedIn posts: ```javascript // Sentiment analysis of LinkedIn posts { "name": "Analyze Post Sentiment", "type": "n8n-nodes-base.openAi", "parameters": { "operation": "analyze", "prompt": "Analyze the sentiment of this LinkedIn post: {{ $json.postText }}" } } ``` ## Integration Examples ### CRM Integration Automatically create leads in your CRM: ```json Salesforce { "name": "Create Salesforce Lead", "type": "n8n-nodes-base.salesforce", "parameters": { "operation": "create", "resource": "lead", "data": { "FirstName": "={{ $json.firstName }}", "LastName": "={{ $json.lastName }}", "Company": "={{ $json.currentCompany }}", "Title": "={{ $json.headline }}", "LinkedIn__c": "={{ $json.profileUrl }}" } } } ``` ```json HubSpot { "name": "Create HubSpot Contact", "type": "n8n-nodes-base.hubspot", "parameters": { "operation": "create", "resource": "contact", "data": { "firstname": "={{ $json.firstName }}", "lastname": "={{ $json.lastName }}", "jobtitle": "={{ $json.headline }}", "linkedin_profile": "={{ $json.profileUrl }}" } } } ``` ### Slack Notifications Send alerts about important prospects: ```json { "name": "Slack Alert", "type": "n8n-nodes-base.slack", "parameters": { "operation": "postMessage", "channel": "#sales-leads", "text": "🎯 High-value prospect found: {{ $json.name }} at {{ $json.company }}\n📍 Location: {{ $json.location }}\n🔗 Profile: {{ $json.profileUrl }}" } } ``` ## Next Steps - [Twitter Node](/docs/n8n-nodes/twitter-node) - Extract Twitter data - [Instagram Node](/docs/n8n-nodes/instagram-node) - Instagram content analysis - [Reddit Node](/docs/n8n-nodes/reddit-node) - Reddit discussion monitoring - [Installation Guide](/docs/n8n-nodes/installation) - Set up Anysite nodes in n8n --- # Reddit Node ## Overview The Anysite Reddit node allows you to extract valuable data from Reddit within your n8n workflows. Search posts, monitor subreddits, analyze discussions, and track community sentiment. ## Node Configuration ### Authentication Select your Anysite API credentials from the dropdown or create new ones. ### Available Operations #### Search Posts Search for Reddit posts across all subreddits or within specific communities. **Parameters:** - **Query** (required): Search terms for finding posts - **Subreddit**: Specific subreddit to search (optional) - **Sort**: "relevance", "hot", "new", "top" - **Time Range**: "hour", "day", "week", "month", "year", "all" - **Limit**: Maximum results to return (1-100) **Example Output:** ```json { "posts": [ { "id": "post123", "title": "How to build scalable web applications", "text": "Here's what I learned after building 10+ web apps...", "subreddit": "webdev", "author": "experienced_dev", "score": 245, "upvoteRatio": 0.92, "comments": 67, "created": "2024-08-26T10:30:00Z", "url": "https://reddit.com/r/webdev/comments/abc123/" } ] } ``` #### Get Post Comments Extract comments and discussion threads from a specific Reddit post. **Parameters:** - **Post URL** (required): Reddit post URL - **Comment Depth**: How deep to fetch comment threads (1-10) - **Sort Comments**: "best", "top", "new", "controversial", "old" - **Limit**: Maximum comments to return **Example Output:** ```json { "comments": [ { "id": "comment456", "text": "Great points! I'd also add that caching is crucial...", "author": "cache_expert", "score": 89, "created": "2024-08-26T11:15:00Z", "replies": [ { "id": "reply789", "text": "Absolutely! Redis has been a game changer for us.", "author": "redis_fan", "score": 34 } ] } ] } ``` #### Get Subreddit Info Get information and statistics about a specific subreddit. **Parameters:** - **Subreddit Name** (required): Subreddit name (without r/) - **Include Rules**: Whether to include subreddit rules - **Include Moderators**: Whether to include moderator list **Example Output:** ```json { "subreddit": { "name": "MachineLearning", "title": "Machine Learning", "description": "This subreddit is dedicated to the discussion of machine learning...", "subscribers": 2500000, "activeUsers": 5420, "created": "2008-01-25T12:00:00Z", "isNsfw": false, "rules": [ { "title": "Stay on topic", "description": "Posts must be related to machine learning" } ] } } ``` #### Monitor Hot Posts Get currently trending/hot posts from specified subreddits. **Parameters:** - **Subreddits** (required): Comma-separated list of subreddit names - **Post Limit**: Number of hot posts per subreddit - **Min Score**: Minimum upvote score filter **Example Output:** ```json { "hotPosts": [ { "subreddit": "technology", "title": "New AI breakthrough announced by researchers", "score": 8750, "comments": 432, "trending": true, "hotnessRank": 1 } ] } ``` ## Workflow Examples ### Brand Monitoring #### Monitor Mentions Search for posts mentioning your brand, product, or competitors across relevant subreddits. #### Analyze Sentiment Use AI nodes to analyze sentiment and identify positive/negative discussions. #### Track Engagement Monitor upvotes, comments, and discussion activity around your brand. #### Alert Team Send notifications for high-impact mentions or negative sentiment. **Example Workflow:** ```json { "nodes": [ { "name": "Monitor Brand Mentions", "type": "@horizondatawave/n8n-nodes-anysite.Reddit", "operation": "searchPosts", "parameters": { "query": "YourBrand OR YourProduct", "subreddit": "technology,startups,entrepreneur", "sort": "new", "limit": 50 } }, { "name": "Filter High Engagement", "type": "n8n-nodes-base.filter", "parameters": { "conditions": [ { "field": "score", "operation": "greaterThan", "value": 10 }, { "field": "comments", "operation": "greaterThan", "value": 5 } ] } }, { "name": "Get Comments", "type": "@horizondatawave/n8n-nodes-anysite.Reddit", "operation": "getPostComments", "parameters": { "postUrl": "={{ $json.url }}", "commentDepth": 2, "limit": 25 } }, { "name": "Analyze Sentiment", "type": "n8n-nodes-base.openAi", "parameters": { "prompt": "Analyze sentiment of this Reddit discussion: {{ $json.title }} - {{ $json.text }}" } } ] } ``` ### Market Research Research customer opinions and market trends: 1. **Industry Monitoring** - Track discussions in industry-specific subreddits 2. **Product Feedback** - Find mentions of your product or competitors 3. **Feature Requests** - Identify commonly requested features or pain points 4. **Trend Analysis** - Analyze trending topics and emerging technologies 5. **Report Generation** - Create weekly market research reports ### Community Management Monitor and engage with your community: 1. **Support Questions** - Find users asking for help with your product 2. **Bug Reports** - Identify and track bug reports from users 3. **Feature Discussions** - Monitor discussions about new features 4. **Community Health** - Track sentiment and engagement in your subreddit 5. **Moderation Alerts** - Get notified about posts needing attention ## Advanced Search ### Search Operators Use Reddit's search syntax for precise queries: ```javascript // Exact title match { "query": "title:\"How to learn machine learning\"" } // Author search { "query": "author:specific_username" } // Multiple subreddits { "query": "subreddit:MachineLearning OR subreddit:programming" } // URL search { "query": "url:github.com" } // Flair search { "query": "flair:Discussion" } // Self posts only { "query": "self:yes machine learning tutorial" } // Score filter { "query": "score:>100 artificial intelligence" } ``` ### Time-based Analysis Track discussions over time: ```json { "name": "Weekly Trend Analysis", "type": "@horizondatawave/n8n-nodes-anysite.Reddit", "operation": "searchPosts", "parameters": { "query": "artificial intelligence", "subreddit": "MachineLearning", "sort": "top", "timeRange": "week", "limit": 100 } } ``` ## Data Analysis ### Engagement Metrics Calculate post and comment engagement: ```javascript // Engagement rate calculation { "engagementRate": "={{ ($json.comments / ($json.score || 1)) * 100 }}" } // Controversy score { "controversyScore": "={{ (1 - $json.upvoteRatio) * 100 }}" } // Discussion density { "discussionDensity": "={{ $json.comments / Math.max($json.text.length / 100, 1) }}" } ``` ### Content Analysis Extract insights from Reddit content: ```json { "name": "Extract Keywords", "type": "n8n-nodes-base.function", "parameters": { "functionCode": ` const text = $input.first().json.text.toLowerCase(); const keywords = text.match(/\\b\\w{4,}\\b/g) || []; const wordCount = {}; keywords.forEach(word => { wordCount[word] = (wordCount[word] || 0) + 1; }); const topKeywords = Object.entries(wordCount) .sort(([,a], [,b]) => b - a) .slice(0, 10) .map(([word, count]) => ({ word, count })); return [{ json: { ...item.json, topKeywords } }]; ` } } ``` ## Error Handling ### Common Errors #### Subreddit Not Found **Error:** `404 - Subreddit not found` **Solution:** - Verify subreddit name is spelled correctly - Check if subreddit is private or banned - Handle missing subreddits gracefully in bulk operations #### Post Deleted **Error:** `404 - Post not found` **Solution:** - Post may have been deleted by user or moderator - Store post data when first accessed - Implement fallback logic for missing posts #### Rate Limit Hit **Error:** `429 - Too many requests` **Solution:** - Add delays between requests (recommended: 2-3 seconds) - Implement exponential backoff retry logic - Consider upgrading API plan for higher limits ### Robust Error Handling ```json { "name": "Reddit with Error Handling", "type": "@horizondatawave/n8n-nodes-anysite.Reddit", "continueOnFail": true, "retryOnFail": true, "maxTries": 3, "waitBetweenTries": 3000, "parameters": { "operation": "searchPosts", "query": "your search query" } } ``` ## Integration Examples ### Slack Notifications Send alerts for important discussions: ```json { "name": "High-Impact Alert", "type": "n8n-nodes-base.slack", "parameters": { "channel": "#marketing", "text": "🔥 Trending Reddit post about {{ $json.title }}\n📊 Score: {{ $json.score }} | 💬 Comments: {{ $json.comments }}\n🔗 {{ $json.url }}" } } ``` ### Database Storage Store Reddit data for analysis: ```json { "name": "Store in Database", "type": "n8n-nodes-base.postgres", "parameters": { "operation": "insert", "table": "reddit_posts", "columns": [ "post_id", "title", "subreddit", "score", "comments", "created_at" ], "values": [ "={{ $json.id }}", "={{ $json.title }}", "={{ $json.subreddit }}", "={{ $json.score }}", "={{ $json.comments }}", "={{ $json.created }}" ] } } ``` ### Content Aggregation Combine Reddit data with other sources: ```json { "workflow": [ "Reddit Search → Get Hot Posts", "Twitter Search → Find Related Tweets", "Google News → Get News Articles", "AI Analysis → Extract Common Themes", "Report Generation → Create Daily Brief" ] } ``` ## Performance Tips ### Efficient Bulk Operations ```json { "name": "Batch Subreddit Monitor", "type": "n8n-nodes-base.splitInBatches", "parameters": { "batchSize": 5, "options": { "reset": false } } } ``` ### Data Deduplication Remove duplicate posts: ```javascript // Deduplicate by post ID { "name": "Remove Duplicates", "type": "n8n-nodes-base.removeDuplicates", "parameters": { "compare": "selectedFields", "fieldsToCompare": ["id"] } } ``` ## Community Insights ### Subreddit Analysis Analyze subreddit health and trends: ```json { "name": "Subreddit Health Check", "type": "@horizondatawave/n8n-nodes-anysite.Reddit", "operation": "getSubredditInfo", "parameters": { "subredditName": "{{ $json.subreddit }}", "includeRules": true, "includeModerators": false } } ``` ### Discussion Quality Assess discussion quality metrics: ```javascript // Calculate discussion quality score { "qualityScore": "={{ (($json.score * 0.4) + ($json.comments * 0.3) + (($json.upvoteRatio - 0.5) * 200 * 0.3)) }}" } ``` ## Next Steps - [LinkedIn Node](/docs/n8n-nodes/linkedin-node) - LinkedIn data extraction - [Twitter Node](/docs/n8n-nodes/twitter-node) - Twitter/X monitoring - [Instagram Node](/docs/n8n-nodes/instagram-node) - Instagram content analysis - [Workflows](/docs/n8n-nodes/workflows) - Pre-built workflow templates --- # Twitter Node ## Overview The Anysite Twitter node enables you to extract Twitter (X) data within your n8n workflows. Search tweets, analyze user profiles, monitor hashtags, and track social media conversations. ## Node Configuration ### Authentication Select your Anysite API credentials from the dropdown or create new ones. ### Available Operations #### Search Users Search for Twitter users by username, bio, or other criteria. **Parameters:** - **Query** (required): Search terms for finding users - **Result Type**: "recent", "popular", or "mixed" - **Limit**: Maximum results to return (1-100) **Example Output:** ```json { "users": [ { "id": "twitter123", "username": "johnsmith_dev", "displayName": "John Smith", "bio": "Senior Software Engineer | Python enthusiast", "followers": 15000, "following": 800, "verified": false, "location": "San Francisco, CA", "profileImageUrl": "https://pbs.twimg.com/profile_images/..." } ] } ``` #### Get User Posts Extract tweets and posts from a specific Twitter user. **Parameters:** - **Username** (required): Twitter username (without @) - **Tweet Count**: Number of tweets to retrieve (1-100) - **Include Replies**: Whether to include reply tweets - **Include Retweets**: Whether to include retweets **Example Output:** ```json { "tweets": [ { "id": "tweet456", "text": "Just shipped a new feature! Excited to see how users respond 🚀", "createdAt": "2024-08-26T14:30:00Z", "engagement": { "likes": 125, "retweets": 32, "replies": 18, "views": 2500 }, "mediaUrls": [], "hashtags": ["#ProductLaunch", "#TechStartup"] } ] } ``` #### Search Tweets Search for tweets by keywords, hashtags, or phrases. **Parameters:** - **Query** (required): Search query (supports operators) - **Result Type**: "recent", "popular", or "mixed" - **Language**: Language filter (optional) - **Date Range**: Time period to search within **Example Output:** ```json { "tweets": [ { "id": "search789", "text": "The future of AI development is looking incredible! #AI #MachineLearning", "author": { "username": "ai_researcher", "displayName": "Dr. Sarah Wilson" }, "createdAt": "2024-08-26T12:00:00Z", "engagement": { "likes": 89, "retweets": 24, "replies": 12 } } ] } ``` #### Get Tweet Details Get detailed information about a specific tweet. **Parameters:** - **Tweet ID** (required): Twitter tweet identifier - **Include Thread**: Whether to include tweet thread context **Example Output:** ```json { "tweet": { "id": "tweet123", "text": "Thread about building scalable APIs: 1/8", "author": { "username": "backend_expert", "followers": 25000 }, "engagement": { "likes": 245, "retweets": 89, "replies": 34 }, "threadTweets": [ { "id": "tweet124", "text": "First, consider your data architecture..." } ] } } ``` ## Workflow Examples ### Social Media Monitoring #### Monitor Brand Mentions Search for tweets mentioning your brand, product, or competitors. #### Analyze Sentiment Use AI nodes to analyze sentiment and categorize mentions as positive, negative, or neutral. #### Identify Influencers Find high-engagement users mentioning your brand and assess their influence. #### Alert Team Send notifications to your social media team for important mentions or negative sentiment. **Example Workflow:** ```json { "nodes": [ { "name": "Monitor Brand", "type": "@horizondatawave/n8n-nodes-anysite.Twitter", "operation": "searchTweets", "parameters": { "query": "YourBrand OR @YourHandle OR #YourHashtag", "resultType": "recent", "limit": 100 } }, { "name": "Sentiment Analysis", "type": "n8n-nodes-base.openAi", "parameters": { "operation": "analyze", "prompt": "Analyze sentiment: {{ $json.text }}" } }, { "name": "Filter Negative", "type": "n8n-nodes-base.filter", "parameters": { "conditions": [ { "field": "sentiment", "operation": "equal", "value": "negative" } ] } }, { "name": "Alert Team", "type": "n8n-nodes-base.slack", "parameters": { "channel": "#social-media", "text": "🚨 Negative mention detected: {{ $json.text }}" } } ] } ``` ### Influencer Outreach Find and analyze potential influencer partners: 1. **Search Influencers** - Find users with high engagement in your niche 2. **Analyze Profile** - Check follower count, engagement rate, and content themes 3. **Content Analysis** - Review recent posts for brand alignment 4. **Contact Information** - Extract bio links and contact details 5. **CRM Integration** - Add qualified influencers to your outreach database ### Trend Analysis Track trending topics and hashtags: 1. **Hashtag Monitoring** - Track specific hashtags relevant to your industry 2. **Engagement Tracking** - Monitor tweet performance and viral content 3. **Competitor Analysis** - See what competitors are posting about 4. **Content Opportunities** - Identify trending topics for your content calendar 5. **Reporting** - Generate weekly trend reports ## Advanced Search Queries ### Search Operators Use Twitter's advanced search operators: ```javascript // Exact phrase search { "query": "\"artificial intelligence\"" } // Exclude retweets { "query": "machine learning -RT" } // From specific user { "query": "from:elonmusk" } // Mentions of user { "query": "@openai" } // Multiple hashtags { "query": "#AI #MachineLearning" } // Location-based { "query": "startup near:\"San Francisco\"" } // Date range { "query": "product launch since:2024-08-01 until:2024-08-31" } ``` ### Engagement Filters Filter by engagement metrics: ```json { "name": "High Engagement Filter", "type": "n8n-nodes-base.filter", "parameters": { "conditions": [ { "field": "engagement.likes", "operation": "greaterThan", "value": 100 }, { "field": "engagement.retweets", "operation": "greaterThan", "value": 20 } ] } } ``` ## Error Handling ### Common Errors #### Rate Limit Exceeded **Error:** `429 - Too Many Requests` **Solution:** - Add delay nodes between requests (recommended: 1-2 seconds) - Implement retry logic with exponential backoff - Consider upgrading your API plan for higher limits #### Tweet Not Found **Error:** `404 - Tweet not found` **Solution:** - Tweet may have been deleted or made private - Verify the tweet ID is correct - Handle missing tweets gracefully in your workflow #### User Suspended **Error:** `403 - User account suspended` **Solution:** - Skip suspended accounts in bulk operations - Update your user database to mark suspended accounts - Implement error handling to continue workflow ### Retry Configuration ```json { "name": "Twitter with Retry", "type": "@horizondatawave/n8n-nodes-anysite.Twitter", "retryOnFail": true, "maxTries": 3, "waitBetweenTries": 5000, "parameters": { "operation": "searchTweets", "query": "your search query" } } ``` ## Data Processing ### Tweet Analysis Extract insights from tweet data: ```javascript // Calculate engagement rate { "engagementRate": "={{ ($json.engagement.likes + $json.engagement.retweets + $json.engagement.replies) / $json.engagement.views * 100 }}" } // Extract hashtags { "hashtags": "={{ $json.text.match(/#\w+/g) }}" } // Check if verified user { "isInfluencer": "={{ $json.author.verified || $json.author.followers > 10000 }}" } ``` ### Content Classification Use AI to categorize tweets: ```json { "name": "Classify Content", "type": "n8n-nodes-base.openAi", "parameters": { "operation": "classify", "prompt": "Classify this tweet into categories (Product, Marketing, Support, Other): {{ $json.text }}" } } ``` ## Integration Examples ### Google Sheets Export Export tweet data to spreadsheets: ```json { "name": "Export to Sheets", "type": "n8n-nodes-base.googleSheets", "parameters": { "operation": "append", "sheetId": "your-sheet-id", "values": [ "={{ $json.author.username }}", "={{ $json.text }}", "={{ $json.createdAt }}", "={{ $json.engagement.likes }}", "={{ $json.engagement.retweets }}" ] } } ``` ### Webhook Notifications Send real-time alerts: ```json { "name": "Webhook Alert", "type": "n8n-nodes-base.webhook", "parameters": { "httpMethod": "POST", "responseMode": "onReceived", "options": { "data": { "tweet": "={{ $json.text }}", "author": "={{ $json.author.username }}", "engagement": "={{ $json.engagement.likes }}" } } } } ``` ## Performance Optimization ### Batch Processing Process large datasets efficiently: ```json { "name": "Process in Batches", "type": "n8n-nodes-base.splitInBatches", "parameters": { "batchSize": 25 } } ``` ### Caching Cache frequently accessed data: ```javascript // Store user data in memory { "name": "Cache User Data", "type": "n8n-nodes-base.set", "parameters": { "values": { "userCache.{{ $json.username }}": "={{ $json }}" } } } ``` ## Next Steps - [LinkedIn Node](/docs/n8n-nodes/linkedin-node) - LinkedIn data extraction - [Instagram Node](/docs/n8n-nodes/instagram-node) - Instagram content analysis - [Reddit Node](/docs/n8n-nodes/reddit-node) - Reddit discussion monitoring - [Workflows](/docs/n8n-nodes/workflows) - Pre-built workflow templates --- # Web Parser Node ## Overview The Anysite Web Parser node provides powerful web scraping capabilities within your n8n workflows. Extract data from any website, parse HTML content, and convert unstructured web data into structured information for analysis and automation. ## Node Configuration ### Authentication Select your Anysite API credentials from the dropdown or create new ones. ### Available Operations #### Parse URL Extract data from a specific web page URL. **Parameters:** - **URL** (required): Web page URL to scrape - **Wait For Load**: Wait time for dynamic content (0-30 seconds) - **Extract Images**: Include image URLs in the output - **Extract Links**: Include all links found on the page - **Custom Selectors**: CSS selectors for specific elements **Example Output:** ```json { "page": { "url": "https://example.com/article", "title": "How to Build Scalable Web Applications", "description": "A comprehensive guide to building web applications...", "author": "John Developer", "publishDate": "2024-08-26", "content": "Building scalable web applications requires...", "images": [ "https://example.com/images/architecture.png", "https://example.com/images/diagram.jpg" ], "links": [ { "text": "Related Article", "url": "https://example.com/related" } ], "metadata": { "wordCount": 1250, "readingTime": "5 minutes", "tags": ["web development", "scalability", "architecture"] } } } ``` #### Bulk URL Parse Parse multiple URLs in a single request. **Parameters:** - **URLs** (required): Array of URLs to parse - **Batch Size**: Number of URLs to process simultaneously - **Fail on Error**: Stop processing if one URL fails - **Include Screenshots**: Capture page screenshots **Example Output:** ```json { "results": [ { "url": "https://site1.com", "status": "success", "title": "Site 1 Title", "content": "Page content...", "loadTime": 1200 }, { "url": "https://site2.com", "status": "error", "error": "Page not found", "loadTime": 800 } ], "summary": { "total": 2, "successful": 1, "failed": 1, "avgLoadTime": 1000 } } ``` #### Smart Extraction Automatically detect and extract structured data from web pages. **Parameters:** - **URL** (required): Web page URL - **Data Type**: "article", "product", "event", "person", "organization" - **Language**: Expected content language - **Include Schema**: Extract schema.org structured data **Example Output:** ```json { "extracted": { "type": "article", "title": "The Future of AI Development", "author": { "name": "Dr. Sarah Chen", "bio": "AI researcher and author", "social": { "twitter": "@sarahchen_ai", "linkedin": "sarah-chen-ai" } }, "article": { "headline": "The Future of AI Development", "summary": "Exploring trends and innovations in AI...", "content": "Full article content...", "publishDate": "2024-08-26T09:00:00Z", "category": "Technology", "tags": ["AI", "Machine Learning", "Future Tech"] }, "schema": { "@type": "Article", "author": "Dr. Sarah Chen", "datePublished": "2024-08-26" } } } ``` #### Monitor Changes Monitor web pages for changes and get notifications. **Parameters:** - **URL** (required): Web page to monitor - **Check Interval**: How often to check for changes (minutes) - **Change Threshold**: Minimum percentage change to trigger alert - **Monitor Elements**: Specific CSS selectors to monitor - **Notification Method**: "webhook", "email", or "return_data" **Example Output:** ```json { "monitoring": { "url": "https://competitor.com/pricing", "lastChecked": "2024-08-26T15:30:00Z", "changes": [ { "element": "#pricing-table", "changeType": "content", "oldValue": "$99/month", "newValue": "$89/month", "changePercent": 11.1, "timestamp": "2024-08-26T15:30:00Z" } ], "screenshot": { "before": "https://cdn.hdw.ai/screenshots/before_123.png", "after": "https://cdn.hdw.ai/screenshots/after_123.png" } } } ``` ## Workflow Examples ### Competitor Price Monitoring #### Monitor Competitor Pages Set up monitoring for competitor pricing pages and product announcements. #### Detect Changes Get automatic notifications when competitors change prices or launch new products. #### Analysis & Alerts Analyze pricing changes and send alerts to your team with actionable insights. #### Strategy Updates Use the data to adjust your own pricing strategy and competitive positioning. **Example Workflow:** ```json { "nodes": [ { "name": "Monitor Competitor Pricing", "type": "@horizondatawave/n8n-nodes-anysite.WebParser", "operation": "monitorChanges", "parameters": { "url": "https://competitor.com/pricing", "checkInterval": 60, "changeThreshold": 5, "monitorElements": ["#pricing-table", ".product-price"] } }, { "name": "Filter Significant Changes", "type": "n8n-nodes-base.filter", "parameters": { "conditions": [ { "field": "changes[0].changePercent", "operation": "greaterThan", "value": 10 } ] } }, { "name": "Analyze Price Change", "type": "n8n-nodes-base.function", "parameters": { "functionCode": ` const change = items[0].json.changes[0]; const analysis = { competitor: "Competitor Inc", product: "Enterprise Plan", oldPrice: change.oldValue, newPrice: change.newValue, changeAmount: change.newValue - change.oldValue, changePercent: change.changePercent, recommendation: change.changePercent > 0 ? "Consider promotional pricing" : "Review our pricing strategy" }; return [{ json: analysis }]; ` } }, { "name": "Alert Team", "type": "n8n-nodes-base.slack", "parameters": { "channel": "#competitive-intel", "text": "🚨 Competitor Price Change Alert\\n📊 {{ $json.competitor }} changed {{ $json.product }} from {{ $json.oldPrice }} to {{ $json.newPrice }} ({{ $json.changePercent }}%)\\n💡 Recommendation: {{ $json.recommendation }}" } } ] } ``` ### Content Research & Analysis Automatically research and analyze content from multiple sources: 1. **Industry News Monitoring** - Track news sites for industry developments 2. **Competitor Content Analysis** - Monitor competitor blogs and announcements 3. **Trend Research** - Extract trending topics from various publications 4. **Content Gap Analysis** - Find content opportunities in your niche 5. **SEO Research** - Analyze top-ranking pages for target keywords ### Lead Generation from Websites Extract leads and contact information from business websites: 1. **Directory Scraping** - Extract business listings from directories 2. **Contact Page Parsing** - Get contact information from company websites 3. **Team Page Analysis** - Extract employee information and roles 4. **Technology Detection** - Identify technologies used by target companies 5. **CRM Integration** - Automatically add qualified leads to your CRM ## Advanced Parsing ### Custom CSS Selectors Extract specific elements using CSS selectors: ```json { "name": "Custom Data Extraction", "type": "@horizondatawave/n8n-nodes-anysite.WebParser", "operation": "parseUrl", "parameters": { "url": "https://news.ycombinator.com", "customSelectors": { "headlines": ".titleline > a", "scores": ".score", "comments": ".subtext a[href*='item']:last-child", "authors": ".hnuser" } } } ``` ### Dynamic Content Handling Handle JavaScript-heavy websites: ```json { "name": "Parse SPA Website", "type": "@horizondatawave/n8n-nodes-anysite.WebParser", "operation": "parseUrl", "parameters": { "url": "https://spa-website.com", "waitForLoad": 10, "waitForSelector": "#dynamic-content", "executeJavaScript": "document.querySelector('#load-more').click()" } } ``` ### Data Transformation Transform extracted data into structured format: ```javascript // Clean and structure scraped data { "name": "Transform Data", "type": "n8n-nodes-base.function", "parameters": { "functionCode": ` const cleanText = (text) => text?.trim().replace(/\\s+/g, ' '); const extractPrice = (text) => { const match = text.match(/\\$([\\d,]+(?:\\.\\d{2})?)/); return match ? parseFloat(match[1].replace(',', '')) : null; }; const transformed = items.map(item => ({ json: { title: cleanText(item.json.title), price: extractPrice(item.json.priceText), description: cleanText(item.json.description), url: item.json.url, extractedAt: new Date().toISOString() } })); return transformed; ` } } ``` ## Error Handling ### Common Issues #### Page Load Timeout **Error:** `408 - Page load timeout` **Solution:** - Increase wait time for slow-loading pages - Check if the website is experiencing issues - Consider parsing the page in multiple steps #### Access Denied **Error:** `403 - Forbidden` **Solution:** - Website may be blocking automated access - Try using different user agents - Respect robots.txt and terms of service - Consider reaching out to site owners #### Rate Limiting **Error:** `429 - Too many requests` **Solution:** - Add delays between requests - Reduce concurrent parsing operations - Implement exponential backoff - Consider upgrading your API plan #### Element Not Found **Error:** `404 - Element not found` **Solution:** - Website structure may have changed - Update CSS selectors - Add fallback selectors - Implement graceful degradation ### Robust Parsing ```json { "name": "Robust Web Parser", "type": "@horizondatawave/n8n-nodes-anysite.WebParser", "continueOnFail": true, "retryOnFail": true, "maxTries": 3, "waitBetweenTries": 5000, "parameters": { "operation": "parseUrl", "url": "{{ $json.targetUrl }}", "fallbackSelectors": { "title": ["h1", ".title", ".headline", "title"], "content": [".content", ".article-body", "main", ".post"] } } } ``` ## Data Quality & Validation ### Content Validation Validate extracted data quality: ```javascript // Data quality checks { "name": "Validate Data Quality", "type": "n8n-nodes-base.function", "parameters": { "functionCode": ` const validateData = (data) => { const quality = { score: 0, issues: [], valid: true }; // Check title if (!data.title || data.title.length < 10) { quality.issues.push('Title too short or missing'); quality.valid = false; } else { quality.score += 25; } // Check content if (!data.content || data.content.length < 100) { quality.issues.push('Content too short or missing'); quality.valid = false; } else { quality.score += 25; } // Check for duplicate content if (data.title === data.description) { quality.issues.push('Title and description are identical'); quality.score -= 10; } // Check for extraction artifacts if (data.content.includes('javascript:') || data.content.includes('void(0)')) { quality.issues.push('Content contains JavaScript artifacts'); quality.score -= 15; } quality.score = Math.max(0, quality.score); return { ...data, quality }; }; return items.map(item => ({ json: validateData(item.json) })); ` } } ``` ### Duplicate Detection Remove duplicate content: ```json { "name": "Remove Duplicates", "type": "n8n-nodes-base.removeDuplicates", "parameters": { "compare": "selectedFields", "fieldsToCompare": ["title", "url"] } } ``` ## Integration Examples ### Database Storage Store parsed data in database: ```json { "name": "Store Parsed Data", "type": "n8n-nodes-base.postgres", "parameters": { "operation": "insert", "table": "scraped_content", "columns": [ "url", "title", "content", "author", "publish_date", "scraped_at" ], "values": [ "={{ $json.url }}", "={{ $json.title }}", "={{ $json.content }}", "={{ $json.author }}", "={{ $json.publishDate }}", "={{ new Date().toISOString() }}" ] } } ``` ### Content Management Add to CMS or knowledge base: ```json { "name": "Add to Notion", "type": "n8n-nodes-base.notion", "parameters": { "operation": "create", "resource": "page", "databaseId": "your-database-id", "properties": { "Title": "={{ $json.title }}", "URL": "={{ $json.url }}", "Content": "={{ $json.content }}", "Source": "Web Scraping", "Date": "={{ new Date().toISOString() }}" } } } ``` ### AI Analysis Analyze extracted content with AI: ```json { "name": "AI Content Analysis", "type": "n8n-nodes-base.openAi", "parameters": { "operation": "analyze", "prompt": "Analyze this article and provide: 1) Main topics, 2) Key insights, 3) Sentiment, 4) Target audience. Article: {{ $json.title }} - {{ $json.content }}" } } ``` ## Performance Optimization ### Parallel Processing Process multiple URLs simultaneously: ```json { "name": "Parallel URL Processing", "type": "@horizondatawave/n8n-nodes-anysite.WebParser", "operation": "bulkUrlParse", "parameters": { "urls": [ "https://site1.com", "https://site2.com", "https://site3.com" ], "batchSize": 3, "maxRetries": 2 } } ``` ### Selective Parsing Only parse essential elements to improve speed: ```json { "name": "Fast Essential Parsing", "type": "@horizondatawave/n8n-nodes-anysite.WebParser", "operation": "parseUrl", "parameters": { "url": "{{ $json.url }}", "extractImages": false, "extractLinks": false, "customSelectors": { "title": "h1", "price": ".price", "availability": ".stock-status" } } } ``` ## Best Practices ### Ethical Scraping - Always respect robots.txt files - Don't overload servers with too many requests - Follow website terms of service - Consider reaching out to site owners for API access - Store only necessary data and respect privacy ### Performance Tips - Use batch operations for multiple URLs - Implement proper error handling and retries - Add appropriate delays between requests - Cache frequently accessed data - Monitor your API usage and quotas ### Data Quality - Validate extracted data before using it - Implement fallback extraction methods - Clean and normalize text content - Remove duplicate entries - Handle encoding and special characters properly ## Next Steps - [LinkedIn Node](/docs/n8n-nodes/linkedin-node) - LinkedIn data extraction - [Twitter Node](/docs/n8n-nodes/twitter-node) - Twitter/X monitoring - [Instagram Node](/docs/n8n-nodes/instagram-node) - Instagram analysis - [Workflows](/docs/n8n-nodes/workflows) - Pre-built workflow templates --- # Pre-built Workflows ## Overview Get started quickly with pre-built workflow templates combining multiple Anysite nodes for common business scenarios. These templates provide complete automation solutions that you can customize for your specific needs. ## Lead Generation Workflows ### Social Media Lead Discovery Complete workflow for finding and qualifying leads across social platforms. **What it does:** - Searches LinkedIn for professionals in target industries - Finds their Twitter profiles for engagement analysis - Extracts contact information from company websites - Scores leads based on engagement and company size - Adds qualified leads to your CRM **Workflow Template:** ```json { "name": "Social Media Lead Discovery", "nodes": [ { "name": "Search LinkedIn Professionals", "type": "@horizondatawave/n8n-nodes-anysite.LinkedIn", "operation": "searchPeople", "parameters": { "keywords": "CTO OR \"Chief Technology Officer\"", "location": "San Francisco Bay Area", "industry": "Technology", "limit": 50 } }, { "name": "Find Twitter Profiles", "type": "@horizondatawave/n8n-nodes-anysite.Twitter", "operation": "searchUsers", "parameters": { "query": "{{ $json.firstName }} {{ $json.lastName }} {{ $json.company }}" } }, { "name": "Get Company Website", "type": "@horizondatawave/n8n-nodes-anysite.LinkedIn", "operation": "getCompanyInfo", "parameters": { "companyName": "{{ $json.company }}" } }, { "name": "Extract Contact Info", "type": "@horizondatawave/n8n-nodes-anysite.WebParser", "operation": "parseUrl", "parameters": { "url": "{{ $json.websiteUrl }}/contact", "customSelectors": { "email": "a[href^='mailto:']", "phone": "[href^='tel:']" } } }, { "name": "Score Lead Quality", "type": "n8n-nodes-base.function", "parameters": { "functionCode": ` const lead = items[0].json; let score = 0; // Company size scoring if (lead.employeeCount > 500) score += 30; else if (lead.employeeCount > 100) score += 20; else if (lead.employeeCount > 10) score += 10; // Social engagement scoring if (lead.twitterFollowers > 5000) score += 25; else if (lead.twitterFollowers > 1000) score += 15; // Industry relevance if (lead.industry.includes('Technology')) score += 20; if (lead.industry.includes('Software')) score += 15; // Contact availability if (lead.email) score += 15; if (lead.phone) score += 10; return [{ json: { ...lead, leadScore: score, qualification: score > 70 ? 'Hot' : score > 40 ? 'Warm' : 'Cold' } }]; ` } }, { "name": "Filter High-Quality Leads", "type": "n8n-nodes-base.filter", "parameters": { "conditions": [ { "field": "leadScore", "operation": "greaterThan", "value": 40 } ] } }, { "name": "Add to CRM", "type": "n8n-nodes-base.hubspot", "parameters": { "operation": "create", "resource": "contact", "data": { "firstname": "={{ $json.firstName }}", "lastname": "={{ $json.lastName }}", "email": "={{ $json.email }}", "company": "={{ $json.company }}", "jobtitle": "={{ $json.position }}", "lead_score": "={{ $json.leadScore }}", "lead_source": "Social Media Discovery" } } } ] } ``` ### Content Creator Outreach Find and connect with content creators in your industry. **Features:** - Instagram influencer discovery - Engagement rate analysis - Contact information extraction - Outreach message personalization ## Competitive Intelligence ### Competitor Social Media Monitoring Track competitor activity across all social platforms. **Workflow Components:** 1. **Multi-Platform Search** - Monitor LinkedIn, Twitter, Instagram, Reddit 2. **Content Analysis** - Extract themes, messaging, and engagement 3. **Performance Tracking** - Compare engagement rates and reach 4. **Trend Identification** - Spot emerging topics and strategies 5. **Report Generation** - Weekly competitive intelligence reports **Workflow Template:** ```json { "name": "Competitor Social Monitoring", "nodes": [ { "name": "Monitor Competitor LinkedIn", "type": "@horizondatawave/n8n-nodes-anysite.LinkedIn", "operation": "getCompanyPosts", "parameters": { "companyName": "{{ $('Set Competitors').item.json.competitor }}", "limit": 10 } }, { "name": "Monitor Competitor Twitter", "type": "@horizondatawave/n8n-nodes-anysite.Twitter", "operation": "getUserPosts", "parameters": { "username": "{{ $('Set Competitors').item.json.twitterHandle }}", "tweetCount": 20 } }, { "name": "Analyze Content Themes", "type": "n8n-nodes-base.openAi", "parameters": { "operation": "analyze", "prompt": "Analyze these social media posts and identify the main themes, messaging strategies, and target audience: {{ JSON.stringify($input.all().map(item => item.json.text || item.json.content).slice(0, 10)) }}" } }, { "name": "Calculate Engagement Metrics", "type": "n8n-nodes-base.function", "parameters": { "functionCode": ` const posts = $input.all(); const totalEngagement = posts.reduce((sum, post) => { const likes = post.json.likes || 0; const comments = post.json.comments || 0; const shares = post.json.shares || post.json.retweets || 0; return sum + likes + comments + shares; }, 0); const avgEngagement = totalEngagement / posts.length; const topPost = posts.reduce((max, post) => { const engagement = (post.json.likes || 0) + (post.json.comments || 0); const maxEngagement = (max.json.likes || 0) + (max.json.comments || 0); return engagement > maxEngagement ? post : max; }, posts[0]); return [{ json: { competitor: posts[0].json.competitor, totalPosts: posts.length, avgEngagement, topPost: topPost.json, analysisDate: new Date().toISOString() } }]; ` } } ] } ``` ### Price Monitoring & Analysis Monitor competitor pricing and product changes. **Capabilities:** - Website change detection - Price comparison analysis - Product launch identification - Market positioning insights ## Content Research ### Industry Trend Analysis Discover trending topics and content opportunities. **Workflow Features:** 1. **Multi-Source Research** - Reddit, Twitter, industry blogs 2. **Trend Identification** - Spot emerging topics and discussions 3. **Content Gap Analysis** - Find underserved content areas 4. **Keyword Research** - Extract popular search terms 5. **Content Calendar** - Generate content ideas and scheduling **Example Implementation:** ```json { "name": "Industry Trend Analysis", "trigger": { "type": "n8n-nodes-base.cron", "parameters": { "rule": { "interval": [ { "field": "cronExpression", "expression": "0 9 * * 1" } ] } } }, "nodes": [ { "name": "Reddit Hot Topics", "type": "@horizondatawave/n8n-nodes-anysite.Reddit", "operation": "monitorHotPosts", "parameters": { "subreddits": "MachineLearning,artificial,technology", "postLimit": 20, "minScore": 100 } }, { "name": "Twitter Trending", "type": "@horizondatawave/n8n-nodes-anysite.Twitter", "operation": "searchTweets", "parameters": { "query": "#AI OR #MachineLearning OR #TechTrends", "resultType": "popular", "limit": 50 } }, { "name": "Extract Trending Keywords", "type": "n8n-nodes-base.function", "parameters": { "functionCode": ` const allText = $input.all().map(item => item.json.title || item.json.text || '' ).join(' '); const keywords = allText.toLowerCase() .match(/\\b\\w{4,}\\b/g) || []; const keywordCount = {}; keywords.forEach(word => { if (!['this', 'that', 'with', 'from', 'they', 'have', 'will', 'been', 'said'].includes(word)) { keywordCount[word] = (keywordCount[word] || 0) + 1; } }); const trending = Object.entries(keywordCount) .sort(([,a], [,b]) => b - a) .slice(0, 15) .map(([keyword, count]) => ({ keyword, mentions: count })); return [{ json: { trendingKeywords: trending, date: new Date().toISOString() } }]; ` } }, { "name": "Generate Content Ideas", "type": "n8n-nodes-base.openAi", "parameters": { "operation": "generate", "prompt": "Based on these trending keywords in AI/ML: {{ JSON.stringify($json.trendingKeywords) }}, generate 5 unique blog post ideas that would appeal to technical professionals. Include title, brief description, and target audience for each." } }, { "name": "Save to Content Calendar", "type": "n8n-nodes-base.googleSheets", "parameters": { "operation": "append", "sheetId": "your-content-calendar-sheet-id", "values": [ "={{ new Date().toLocaleDateString() }}", "={{ $json.contentIdeas }}", "Trend Analysis", "Planning" ] } } ] } ``` ## Brand Monitoring ### Social Mention Tracking Monitor brand mentions across all social platforms. **Monitoring Scope:** - Direct brand mentions - Product mentions - Competitor mentions - Industry discussions - Sentiment analysis ### Crisis Management Rapid response workflow for negative mentions. **Response Features:** - Real-time mention detection - Sentiment analysis - Escalation triggers - Team notifications - Response tracking ## Data Collection & Analysis ### Market Research Automation Comprehensive market intelligence gathering. **Research Areas:** 1. **Competitor Analysis** - Products, pricing, messaging 2. **Customer Feedback** - Reviews, social mentions, surveys 3. **Industry Trends** - News, discussions, expert opinions 4. **Technology Stack** - Tools and technologies used by targets 5. **Contact Intelligence** - Decision maker identification ### Lead Qualification Pipeline Automated lead scoring and qualification. **Qualification Criteria:** - Company size and growth - Technology stack alignment - Budget indicators - Decision maker access - Engagement history ## Workflow Customization ### Template Modification Each workflow template can be customized by: 1. **Adjusting Parameters** - Modify search criteria, limits, and filters 2. **Adding Integrations** - Connect to your CRM, database, or notification systems 3. **Custom Logic** - Add business-specific scoring and qualification rules 4. **Scheduling** - Set up automated execution times 5. **Error Handling** - Configure retry logic and fallback options ### Best Practices **Performance Optimization:** - Use appropriate rate limiting between API calls - Implement caching for frequently accessed data - Process data in batches for large datasets - Set up monitoring and alerting for workflow health **Data Quality:** - Validate extracted data before processing - Implement deduplication logic - Handle missing or incomplete data gracefully - Regular data cleanup and maintenance **Compliance:** - Respect platform rate limits and terms of service - Implement proper data retention policies - Ensure GDPR compliance for personal data - Regular security audits of data access ## Getting Started ### Quick Setup 1. **Choose a Template** - Select a workflow that matches your use case 2. **Configure Credentials** - Set up your Anysite API credentials 3. **Customize Parameters** - Adjust settings for your specific needs 4. **Test Workflow** - Run with small dataset to verify functionality 5. **Schedule Automation** - Set up regular execution if needed ### Import Instructions To import these workflows into n8n: 1. Copy the JSON workflow template 2. In n8n, go to **Workflows** > **Import from JSON** 3. Paste the template and click **Import** 4. Configure your Anysite credentials in the credential manager 5. Update any company-specific parameters 6. Test the workflow with sample data ### Support & Community - **Documentation** - Detailed guides for each Anysite node - **Community Forum** - Share templates and get help - **Support** - Technical support for enterprise customers - **Updates** - Regular template updates and new use cases ## Advanced Workflows ### Multi-Channel Attribution Track customer journey across multiple touchpoints. ### Competitive Intelligence Dashboard Real-time dashboard with competitor metrics. ### Customer Success Automation Proactive customer health monitoring and intervention. ### Sales Pipeline Acceleration Automated lead nurturing and qualification. ## Next Steps - [LinkedIn Node](/docs/n8n-nodes/linkedin-node) - LinkedIn data extraction - [Twitter Node](/docs/n8n-nodes/twitter-node) - Twitter/X monitoring - [Instagram Node](/docs/n8n-nodes/instagram-node) - Instagram content analysis - [Web Parser Node](/docs/n8n-nodes/web-parser-node) - Website data extraction --- # Quickstart Guide ## Quick Setup Get up and running with Anysite in just a few steps: #### Get Your API Key Sign up at [anysite.io](https://app.anysite.io/register) and generate your API key from the dashboard. #### Make Your First Request Test your API key with a simple request: ```bash curl -X GET "https://api.anysite.io/token/statistic" \ -H "access-token: YOUR_ACCESS_TOKEN" ``` #### Choose Your Integration Select the integration method that best fits your workflow: - **REST API** for direct integration - **MCP Server** for AI tools (Claude, Cursor) - **n8n Nodes** for workflow automation ## Common Use Cases #### Lead Generation Extract LinkedIn profiles, find contact information, and build prospect lists #### Social Media Monitoring Track brand mentions, competitor analysis, and social sentiment #### Content Research Gather insights from Reddit discussions, LinkedIn posts, and industry conversations #### Market Intelligence Analyze trends, track influencers, and monitor industry developments ## Quick Examples ### LinkedIn Profile Search ```bash cURL curl -X POST "https://api.anysite.io/api/linkedin/search/users" \ -H "access-token: YOUR_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{"keywords": "marketing manager", "count": 5}' ``` ```python Python import requests headers = { 'access-token': 'YOUR_ACCESS_TOKEN', 'Content-Type': 'application/json' } data = { 'keywords': 'marketing manager', 'count': 5 } response = requests.post( 'https://api.anysite.io/api/linkedin/search/users', headers=headers, json=data ) profiles = response.json() ``` ```javascript JavaScript const response = await fetch( 'https://api.anysite.io/api/linkedin/search/users', { method: 'POST', headers: { 'access-token': 'YOUR_ACCESS_TOKEN', 'Content-Type': 'application/json' }, body: JSON.stringify({ keywords: 'marketing manager', count: 5 }) } ); const profiles = await response.json(); ``` ### Instagram Post Analysis ```bash cURL curl -X POST "https://api.anysite.io/api/instagram/user/posts" \ -H "access-token: YOUR_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{"user": "techcompany", "count": 10}' ``` ```python Python import requests headers = { 'access-token': 'YOUR_ACCESS_TOKEN', 'Content-Type': 'application/json' } data = { 'user': 'techcompany', 'count': 10 } response = requests.post( 'https://api.anysite.io/api/instagram/user/posts', headers=headers, json=data ) posts = response.json() ``` ### Reddit Discussion Monitoring ```bash cURL curl -X POST "https://api.anysite.io/api/reddit/search/posts" \ -H "access-token: YOUR_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{"query": "artificial intelligence", "count": 20}' ``` ```python Python import requests headers = { 'access-token': 'YOUR_ACCESS_TOKEN', 'Content-Type': 'application/json' } data = { 'query': 'artificial intelligence', 'count': 20 } response = requests.post( 'https://api.anysite.io/api/reddit/search/posts', headers=headers, json=data ) discussions = response.json() ``` ## Integration Paths #### REST API **Best for:** Custom applications, direct integrations, microservices - Full control over requests and data processing - Support for all programming languages - Real-time data extraction - Custom rate limiting and error handling [View API Documentation →](/docs/api) #### MCP Server **Best for:** AI tools integration, Claude/Cursor workflows - Direct integration with AI development environments - Natural language interface for data extraction - Context-aware data retrieval - Seamless workflow integration [Setup MCP Server →](/docs/mcp-server/local-server/installation) #### n8n Nodes **Best for:** Workflow automation, no-code solutions - Visual workflow builder - Pre-built automation templates - Scheduled data extraction - Integration with 400+ other services [Install n8n Nodes →](/docs/n8n-nodes/installation) ## Rate Limits & Best Practices > Be mindful of rate limits to ensure optimal performance: - **Free tier**: 100 requests/hour - **Pro tier**: 1,000 requests/hour - **Enterprise**: Custom limits Always implement exponential backoff for retries and respect platform-specific guidelines. > **Pro Tips:** - Use specific search filters to get more relevant results - Implement caching for frequently accessed data - Monitor your API usage in the dashboard - Use webhook endpoints for real-time updates when available ## Need Help? #### API Reference Complete API reference and guides #### ReDoc API Docs Interactive API documentation #### GitHub Open source examples and tools