Reconnoiter.ai API Documentation

Complete API reference with examples for the Reconnoiter.ai company enrichment API.

Base URL: https://pipeline-intelligence-production.up.railway.app


Table of Contents

  1. Use Cases
  2. Authentication
  3. API Keys
  4. Enrichment Endpoints
  5. Usage & Dashboard
  6. Competitor Monitoring
  7. Rate Limits & Pricing
  8. Error Handling

🎯 Use Cases

For Developers & Technical Teams

Perfect if you want to:

  • ✅ Enrich leads in your CRM automatically (Salesforce, HubSpot, Pipedrive)
  • ✅ Build custom prospecting tools for your sales team
  • ✅ Power internal sales dashboards and analytics
  • ✅ Integrate with Zapier, Make.com, or n8n
  • ✅ Create Chrome extensions or browser tools
  • ✅ Automate lead qualification workflows
  • ✅ Build industry-specific enrichment solutions

You'll love our API if:

  • You're comfortable writing code or using no-code tools
  • You want maximum flexibility and customization
  • You're integrating into existing systems
  • You need programmatic access to enrichment data

Get started: Jump to API Keys to generate your key and start enriching in 5 minutes.


Non-Technical? Web Dashboard Coming Soon! 🚀

We're building a visual dashboard so you can:

  • ✅ Search and enrich companies without coding
  • ✅ Save prospect lists and export to CSV
  • ✅ Get email alerts for competitor changes
  • ✅ View enrichment history and analytics
  • ✅ Share reports with your team
  • ✅ One-click CRM export

Interested in the dashboard?

  • Email: dashboard@reconnoiter.info with "Waitlist" in subject
  • We'll notify you as soon as it's ready (targeting Week 5+)
  • Early access for waitlist members
  • Special launch pricing for early adopters

What Our Customers Are Building

Sales Teams:

  • "We enrich 100+ leads daily from LinkedIn Sales Navigator into our CRM"
  • "Automated lead scoring saves our SDRs 10 hours/week"

Investors & VCs:

  • "Track portfolio companies and their competitors automatically"
  • "Get alerts when companies in our space raise funding"

Marketing Agencies:

  • "Qualify prospects before outreach to improve conversion rates"
  • "Build custom industry reports for our clients"

SaaS Companies:

  • "Enrich signups in real-time to personalize onboarding"
  • "Identify high-value accounts for our sales team to prioritize"

Want to share your use case? Email us at hello@reconnoiter.info - we love hearing how you're using Reconnoiter!


Authentication

All API endpoints (except key generation) require authentication via the X-API-Key header.

curl -X GET https://pipeline-intelligence-production.up.railway.app/api/usage \
  -H "X-API-Key: pi_live_your-api-key-here"

Security Notes:

  • Never commit your API key to version control
  • Store it in environment variables
  • Rotate keys if compromised
  • Each key is tied to a usage tier (Free/Pro/Enterprise)

API Keys

Generate API Key

Create a new API key. No authentication required.

Endpoint: POST /api/keys/generate

Request Body:

{
  "email": "your@email.com"
}

curl Example:

curl -X POST https://pipeline-intelligence-production.up.railway.app/api/keys/generate \
  -H "Content-Type: application/json" \
  -d '{
    "email": "your@email.com"
  }'

Response:

{
  "success": true,
  "api_key": "pi_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
  "tier": "free",
  "message": "API key generated successfully",
  "limits": {
    "requests_per_day": 10,
    "requests_per_month": 100
  }
}

⚠️ Important: Save your API key immediately - you won't see it again!


Enrichment Endpoints

Enrich Single Company

Get comprehensive company intelligence for a single domain.

Endpoint: POST /api/enrich

Authentication: Required

Request Body:

{
  "domain": "stripe.com",
  "skip_cache": false
}

curl Example:

curl -X POST https://pipeline-intelligence-production.up.railway.app/api/enrich \
  -H "Content-Type: application/json" \
  -H "X-API-Key: pi_live_your-api-key-here" \
  -d '{
    "domain": "stripe.com",
    "skip_cache": false
  }'

Response:

{
  "domain": "stripe.com",
  "enriched_at": "2025-01-15T10:30:00Z",
  "processing_time_ms": 8234,
  "data_sources": {
    "website": true,
    "news": true,
    "github": true,
    "social": true
  },
  "company": {
    "company_name": "Stripe",
    "industry": "Payment Processing SaaS",
    "business_model": "B2B SaaS",
    "growth_stage": "Series C+",
    "employee_range": "1000-5000",
    "product_fit_score": 9,
    "confidence_score": 95
  },
  "tech_stack": {
    "languages": ["JavaScript", "Ruby", "Go"],
    "frameworks": ["React", "Rails"],
    "platforms": ["AWS", "Kubernetes"],
    "frontend": ["React", "TypeScript"],
    "backend": ["Ruby", "Go", "Node.js"]
  },
  "news": {
    "recent_activity": "high",
    "sentiment": "positive",
    "article_count": 10,
    "key_events": ["Funding: Stripe raises $600M"],
    "top_articles": [
      {
        "title": "Stripe expands to Europe",
        "url": "https://techcrunch.com/...",
        "date": "2025-01-10T00:00:00Z",
        "source": "TechCrunch"
      }
    ]
  },
  "github": {
    "has_github": true,
    "org_name": "stripe",
    "public_repos": 47,
    "total_stars": 15420,
    "open_source_activity": "high",
    "primary_languages": ["JavaScript", "Ruby", "Go"],
    "top_projects": [
      {
        "name": "stripe-node",
        "stars": 2340,
        "description": "Node.js library for Stripe API"
      }
    ]
  },
  "social": {
    "handles": {
      "linkedin": "stripe",
      "twitter": "stripe",
      "github": "stripe",
      "facebook": null
    },
    "presence_score": 50,
    "has_social_presence": true
  },
  "lead_score": 85,
  "score_breakdown": {
    "total": 85,
    "criteria": {
      "technographics": 85,
      "company_size": 70,
      "growth_signals": 90,
      "engagement": 85,
      "news_sentiment": 95,
      "github_activity": 95,
      "funding": 90,
      "hiring": 75
    },
    "weights": {
      "technographics": 0.15,
      "company_size": 0.10,
      "growth_signals": 0.20,
      "engagement": 0.15,
      "news_sentiment": 0.15,
      "github_activity": 0.10,
      "funding": 0.10,
      "hiring": 0.05
    },
    "explanations": [
      "Strong news sentiment: 95/100 (14pts)",
      "Strong growth signals: 90/100 (18pts)",
      "Strong github activity: 95/100 (10pts)"
    ],
    "signals": {
      "positive": [
        "Modern tech stack",
        "Strong growth indicators",
        "Positive media coverage",
        "Active on GitHub (47 repos)",
        "Currently hiring"
      ],
      "negative": [],
      "neutral": []
    }
  },
  "metadata": {
    "url": "https://stripe.com",
    "title": "Stripe | Payment Processing Platform",
    "description": "Online payment processing for internet businesses..."
  },
  "costs": {
    "company_analysis": 0.0015,
    "tech_stack": 0.0005,
    "total": 0.002
  },
  "cached": false
}

Parameters:

  • domain (required): Company domain to enrich (e.g., "stripe.com")
  • skip_cache (optional): Set to true to force fresh data, default false

Performance:

  • Cached responses: ~400ms
  • Fresh enrichment: ~8-15 seconds

Counts against usage limits: ✅ Yes


Enrich Multiple Companies (Batch)

Enrich up to 10 companies in a single request.

Endpoint: POST /api/enrich/batch

Authentication: Required

Request Body:

{
  "domains": ["stripe.com", "square.com", "shopify.com"]
}

curl Example:

curl -X POST https://pipeline-intelligence-production.up.railway.app/api/enrich/batch \
  -H "Content-Type: application/json" \
  -H "X-API-Key: pi_live_your-api-key-here" \
  -d '{
    "domains": ["stripe.com", "square.com", "shopify.com"]
  }'

Response:

{
  "total": 3,
  "results": [
    {
      "domain": "stripe.com",
      "status": "success",
      "data": {
        "company": { "company_name": "Stripe", ... },
        "lead_score": 85,
        ...
      }
    },
    {
      "domain": "square.com",
      "status": "success",
      "data": { ... }
    },
    {
      "domain": "shopify.com",
      "status": "success",
      "data": { ... }
    }
  ],
  "processing_time_ms": 15420
}

Parameters:

  • domains (required): Array of domains to enrich (max 10)

Limits:

  • Maximum 10 domains per request
  • Each domain counts as 1 request against your usage limit

Counts against usage limits: ✅ Yes (each domain counts as 1)


Lead Scoring System

Multi-Dimensional Scoring (New in Day 10!)

Every enrichment now includes a detailed score_breakdown that shows exactly why a company received its lead score. The system evaluates companies across 8 dimensions with customizable weights.

Score Breakdown Structure

{
  "lead_score": 85,
  "score_breakdown": {
    "total": 85,
    "criteria": {
      "technographics": 85,      // Modern tech stack indicators
      "company_size": 70,         // Company size fit for your ICP
      "growth_signals": 90,       // Recent activity and growth
      "engagement": 85,           // GitHub, news, social presence
      "news_sentiment": 95,       // Media coverage sentiment
      "github_activity": 95,      // Open source engagement
      "funding": 90,              // Funding stage/announcements
      "hiring": 75                // Hiring signals
    },
    "weights": {
      "technographics": 0.15,     // 15% of total score
      "company_size": 0.10,       // 10% of total score
      "growth_signals": 0.20,     // 20% of total score (highest)
      "engagement": 0.15,         // 15% of total score
      "news_sentiment": 0.15,     // 15% of total score
      "github_activity": 0.10,    // 10% of total score
      "funding": 0.10,            // 10% of total score
      "hiring": 0.05              // 5% of total score (lowest)
    },
    "explanations": [
      "Strong growth signals: 90/100 (18pts)",
      "Strong news sentiment: 95/100 (14pts)",
      "Strong engagement: 85/100 (13pts)"
    ],
    "signals": {
      "positive": [
        "Modern tech stack",
        "Strong growth indicators",
        "Positive media coverage",
        "Active on GitHub (47 repos)"
      ],
      "negative": [
        "Very small or very large company"
      ],
      "neutral": [
        "Mixed media sentiment"
      ]
    }
  }
}

Scoring Criteria Explained

1. Technographics (15% weight)

Evaluates modern technology adoption and tech-forward culture.

Factors:

  • AI, SaaS, API, Cloud mentions in description (+10 pts each)
  • GitHub organization presence (+10 pts)
  • Modern frameworks (React, Next.js) (+5 pts each)

Score Range: 0-100 Best for: Identifying tech-savvy companies

2. Company Size (10% weight)

Matches company size to your ideal customer profile.

Ideal Sizes:

  • 51-200 employees: 95 pts
  • 11-50 employees: 90 pts
  • 201-500 employees: 85 pts
  • 501-1000 employees: 75 pts
  • 1000+ employees: 70 pts
  • 1-10 employees: 60 pts

Score Range: 0-100 Best for: Targeting mid-market companies

3. Growth Signals (20% weight) ⭐ Highest Weight

Identifies companies with momentum and recent activity.

Factors:

  • Recent news articles (<30 days) (+10 pts per article, max +30)
  • Social media presence (Twitter, LinkedIn, Facebook)
  • Blog or content marketing presence (+7 pts)

Score Range: 0-100 Best for: Finding fast-growing companies

4. Engagement (15% weight)

Measures overall visibility and community engagement.

Factors:

  • GitHub repos (0/10/50+ thresholds)
  • News article count (5/10+ thresholds)
  • Social media platform count

Score Range: 0-100 Best for: Finding active, visible companies

5. News Sentiment (15% weight)

Analyzes media coverage quality and sentiment.

Sentiment Scores:

  • Positive: 100 pts
  • Neutral: 60 pts
  • Negative: 20 pts

Score Range: 0-100 Best for: Avoiding companies with negative press

6. GitHub Activity (10% weight)

Evaluates open source engagement and tech culture.

Thresholds:

  • 50+ repos: +15 pts
  • 20+ repos: +15 pts
  • 5+ repos: +10 pts
  • Any repos: +10 pts

Score Range: 0-100 (30 if no GitHub presence) Best for: Finding developer-friendly companies

7. Funding (10% weight)

Identifies funding stage and investment signals.

Factors:

  • Series A/B/C mentions (+20-25 pts)
  • Unicorn status (+30 pts)
  • IPO (+10 pts)
  • General funding mentions (+15 pts)

Score Range: 0-100 Best for: Targeting well-funded startups

8. Hiring (5% weight) ⭐ Lowest Weight

Detects active hiring and growth.

Factors:

  • Hiring keywords in news (+10 pts per mention)
  • Careers page detected (+20 pts)

Score Range: 0-100 Best for: Finding expanding companies

Using Score Breakdown

Filter by Specific Criteria

// Only target companies with high GitHub activity
const enrichment = await enrichCompany('stripe.com');
if (enrichment.score_breakdown.criteria.github_activity > 80) {
  console.log('Tech-forward company - high priority!');
}

Prioritize by Growth Signals

// Sort leads by growth signals
leads.sort((a, b) =>
  b.score_breakdown.criteria.growth_signals -
  a.score_breakdown.criteria.growth_signals
);

Identify Red Flags

// Check for negative signals
if (enrichment.score_breakdown.signals.negative.length > 0) {
  console.log('Red flags:', enrichment.score_breakdown.signals.negative);
}

Custom Scoring (Future Feature)

In Week 3, you'll be able to customize weights for your specific ICP:

{
  "domain": "stripe.com",
  "custom_weights": {
    "github_activity": 0.30,    // 30% for developer tools
    "technographics": 0.25,     // 25% for tech stack
    "company_size": 0.20,       // 20% for size
    "growth_signals": 0.15,     // 15% for growth
    "funding": 0.05,            // 5% for funding (less important)
    "news_sentiment": 0.05      // 5% for sentiment
  }
}

Benefits of Detailed Scoring

  1. Transparency: See exactly why each company scored high/low
  2. Customization: Filter and prioritize based on what matters to you
  3. Actionable Insights: Know which signals to mention in outreach
  4. Better Targeting: Identify your ideal customer profile patterns
  5. Team Alignment: Share clear criteria for lead quality

Usage & Dashboard

Get Usage Statistics

View your current API usage and remaining quota.

Endpoint: GET /api/usage

Authentication: Required

curl Example:

curl -X GET https://pipeline-intelligence-production.up.railway.app/api/usage \
  -H "X-API-Key: pi_live_your-api-key-here"

Response:

{
  "email": "your@email.com",
  "tier": "free",
  "usage": {
    "today": 5,
    "this_month": 23
  },
  "limits": {
    "daily": 10,
    "monthly": 100
  },
  "remaining": {
    "today": 5,
    "this_month": 77
  }
}

Counts against usage limits: ❌ No


Get Dashboard Data

Get detailed dashboard with usage stats and recent enrichments.

Endpoint: GET /api/dashboard

Authentication: Required

curl Example:

curl -X GET https://pipeline-intelligence-production.up.railway.app/api/dashboard \
  -H "X-API-Key: pi_live_your-api-key-here"

Response:

{
  "user": {
    "email": "your@email.com",
    "tier": "free",
    "created_at": "2025-01-15T10:00:00Z"
  },
  "usage": {
    "today": 5,
    "this_month": 23,
    "limits": {
      "daily": 10,
      "monthly": 100
    },
    "remaining": {
      "today": 5,
      "this_month": 77
    }
  },
  "recent_enrichments": [
    {
      "domain": "stripe.com",
      "enriched_at": "2025-01-15T12:30:00Z",
      "lead_score": 85,
      "cached": false
    },
    {
      "domain": "shopify.com",
      "enriched_at": "2025-01-15T11:45:00Z",
      "lead_score": 78,
      "cached": true
    }
  ]
}

Counts against usage limits: ❌ No


Competitor Monitoring

Automatically track competitors and receive email alerts when changes are detected.

Add Competitor to Watch List

Monitor a competitor for changes. Checks run every 6 hours automatically.

Endpoint: POST /api/monitor/competitor

Authentication: Required

Request Body:

{
  "domain": "stripe.com",
  "alert_email": "your@email.com",
  "watch_for": ["news", "funding", "product_launches", "tech_stack"]
}

curl Example:

curl -X POST https://pipeline-intelligence-production.up.railway.app/api/monitor/competitor \
  -H "Content-Type: application/json" \
  -H "X-API-Key: pi_live_your-api-key-here" \
  -d '{
    "domain": "stripe.com",
    "watch_for": ["news", "funding"]
  }'

Response:

{
  "success": true,
  "message": "Now monitoring stripe.com",
  "check_interval": "6 hours",
  "watching_for": ["news", "funding"]
}

Parameters:

  • domain (required): Competitor domain to monitor
  • alert_email (optional): Email for alerts, defaults to your account email
  • watch_for (optional): Array of events to monitor. Options:
    • "news" - New articles published
    • "funding" - Funding announcements
    • "product_launches" - Product launch news
    • "tech_stack" - Technology changes

What happens:

  • Every 6 hours, we check the competitor for changes
  • If changes detected, you receive an email alert
  • Each check is a fresh enrichment (not cached)

Privacy: Your watch list is private - only you can see your monitored competitors.

Counts against usage limits: ❌ No (monitoring checks don't count against your quota)


Get Your Monitored Competitors

List all competitors you're currently monitoring.

Endpoint: GET /api/monitor/competitors

Authentication: Required

curl Example:

curl -X GET https://pipeline-intelligence-production.up.railway.app/api/monitor/competitors \
  -H "X-API-Key: pi_live_your-api-key-here"

Response:

{
  "count": 3,
  "competitors": [
    {
      "domain": "stripe.com",
      "api_key": "pi_live_a1b2c3...",
      "alert_email": "your@email.com",
      "watch_for": ["news", "funding"],
      "added_at": "2025-01-15T10:00:00Z",
      "last_checked": "2025-01-15T16:00:00Z"
    },
    {
      "domain": "square.com",
      "api_key": "pi_live_a1b2c3...",
      "alert_email": "your@email.com",
      "watch_for": ["product_launches", "tech_stack"],
      "added_at": "2025-01-14T14:30:00Z",
      "last_checked": "2025-01-15T16:00:00Z"
    }
  ]
}

Counts against usage limits: ❌ No


Remove Competitor from Watch List

Stop monitoring a competitor.

Endpoint: DELETE /api/monitor/competitor/:domain

Authentication: Required

curl Example:

curl -X DELETE https://pipeline-intelligence-production.up.railway.app/api/monitor/competitor/stripe.com \
  -H "X-API-Key: pi_live_your-api-key-here"

Response:

{
  "success": true,
  "message": "Stopped monitoring stripe.com"
}

Note: You can only delete competitors you added. Other users' watch lists are private.

Counts against usage limits: ❌ No


Manually Trigger Competitor Check

Force an immediate check of your monitored competitors (useful for testing).

Endpoint: POST /api/monitor/check-now

Authentication: Required

curl Example:

curl -X POST https://pipeline-intelligence-production.up.railway.app/api/monitor/check-now \
  -H "X-API-Key: pi_live_your-api-key-here"

Response:

{
  "success": true,
  "message": "Checking 3 competitor(s)",
  "competitors": ["stripe.com", "square.com", "shopify.com"]
}

Note: This endpoint triggers checks immediately instead of waiting for the 6-hour cron schedule.

Counts against usage limits: ❌ No


Rate Limits & Pricing

Usage Tiers

TierDaily LimitMonthly LimitPriceBest For
Free10 requests100 requests$0/monthTesting & small-scale use
Pro100 requests1,000 requests$49/monthSmall teams & regular use
Enterprise1,000 requests50,000 requestsCustomLarge teams & high volume

What Counts Against Limits?

Counts toward usage:

  • POST /api/enrich - Single enrichment
  • POST /api/enrich/batch - Each domain in batch

Does NOT count toward usage:

  • GET /api/usage - Check usage stats
  • GET /api/dashboard - View dashboard
  • POST /api/keys/generate - Generate API key
  • ❌ All competitor monitoring endpoints
  • ❌ Automated competitor monitoring checks (every 6 hours)

Rate Limit Response

When you exceed your quota, you'll receive a 429 Too Many Requests response:

{
  "error": "Rate limit exceeded",
  "message": "Daily limit of 10 requests reached. Resets at 2025-01-16T00:00:00Z",
  "limits": {
    "daily": 10,
    "monthly": 100
  },
  "usage": {
    "today": 10,
    "this_month": 45
  },
  "reset_at": "2025-01-16T00:00:00Z"
}

Error Handling

HTTP Status Codes

CodeMeaningDescription
200OKRequest successful
400Bad RequestInvalid request parameters
401UnauthorizedMissing or invalid API key
403ForbiddenValid key but insufficient permissions
429Too Many RequestsRate limit exceeded
500Internal Server ErrorServer error (contact support)

Error Response Format

All errors follow this format:

{
  "error": "Error Type",
  "message": "Human-readable error description",
  "details": {
    "field": "Additional context"
  }
}

Common Errors

Missing API Key:

curl -X POST https://pipeline-intelligence-production.up.railway.app/api/enrich \
  -H "Content-Type: application/json" \
  -d '{"domain": "stripe.com"}'

Response (401):

{
  "error": "Missing API key",
  "message": "Include your API key in the X-API-Key header"
}

Invalid Domain:

curl -X POST https://pipeline-intelligence-production.up.railway.app/api/enrich \
  -H "Content-Type: application/json" \
  -H "X-API-Key: pi_live_your-key" \
  -d '{"domain": "not-a-real-domain-12345.com"}'

Response (400):

{
  "error": "Enrichment failed",
  "message": "Unable to scrape website for not-a-real-domain-12345.com"
}

Rate Limit Exceeded:

{
  "error": "Rate limit exceeded",
  "message": "Daily limit of 10 requests reached. Resets at 2025-01-16T00:00:00Z",
  "reset_at": "2025-01-16T00:00:00Z"
}

Best Practices

1. Cache Results Locally

The API caches results for 7 days, but you should also cache enrichment data locally to minimize API calls:

// Good: Cache enrichments in your database
const cached = await db.enrichments.findOne({ domain });
if (cached && Date.now() - cached.timestamp < 7 * 24 * 60 * 60 * 1000) {
  return cached.data;
}

const fresh = await enrichCompany(domain);
await db.enrichments.upsert({ domain, data: fresh, timestamp: Date.now() });
return fresh;

2. Use Batch Endpoint for Multiple Companies

// Bad: Multiple individual requests (uses 10 quota)
for (const domain of domains) {
  await fetch('/api/enrich', { body: JSON.stringify({ domain }) });
}

// Good: Single batch request (uses 10 quota but faster)
await fetch('/api/enrich/batch', {
  body: JSON.stringify({ domains })
});

3. Handle Rate Limits Gracefully

const response = await fetch('/api/enrich', {
  headers: { 'X-API-Key': apiKey },
  body: JSON.stringify({ domain })
});

if (response.status === 429) {
  const error = await response.json();
  const resetAt = new Date(error.reset_at);
  console.log(`Rate limit exceeded. Resets at ${resetAt}`);
  // Wait or queue for later
}

4. Monitor Usage Proactively

// Check usage before making requests
const usage = await fetch('/api/usage', {
  headers: { 'X-API-Key': apiKey }
}).then(r => r.json());

if (usage.remaining.today < 5) {
  console.warn('Running low on daily quota!');
}

5. Set Up Competitor Monitoring for Key Accounts

Instead of manually checking competitors, set up automated monitoring:

// Monitor your top 5 competitors automatically
const competitors = ['stripe.com', 'square.com', 'paypal.com', 'braintree.com', 'adyen.com'];

for (const domain of competitors) {
  await fetch('/api/monitor/competitor', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': apiKey
    },
    body: JSON.stringify({
      domain,
      watch_for: ['funding', 'product_launches', 'news']
    })
  });
}

Code Examples

JavaScript/Node.js

const RECONNOITER_API_KEY = process.env.RECONNOITER_API_KEY;
const BASE_URL = 'https://pipeline-intelligence-production.up.railway.app';

async function enrichCompany(domain) {
  const response = await fetch(`${BASE_URL}/api/enrich`, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': RECONNOITER_API_KEY
    },
    body: JSON.stringify({ domain })
  });

  if (!response.ok) {
    const error = await response.json();
    throw new Error(error.message);
  }

  return await response.json();
}

// Usage
const data = await enrichCompany('stripe.com');
console.log(`Lead score: ${data.lead_score}`);
console.log(`Company: ${data.company.company_name}`);

Python

import os
import requests

RECONNOITER_API_KEY = os.getenv('RECONNOITER_API_KEY')
BASE_URL = 'https://pipeline-intelligence-production.up.railway.app'

def enrich_company(domain):
    response = requests.post(
        f'{BASE_URL}/api/enrich',
        headers={
            'Content-Type': 'application/json',
            'X-API-Key': RECONNOITER_API_KEY
        },
        json={'domain': domain}
    )

    response.raise_for_status()
    return response.json()

# Usage
data = enrich_company('stripe.com')
print(f"Lead score: {data['lead_score']}")
print(f"Company: {data['company']['company_name']}")

Ruby

require 'net/http'
require 'json'

RECONNOITER_API_KEY = ENV['RECONNOITER_API_KEY']
BASE_URL = 'https://pipeline-intelligence-production.up.railway.app'

def enrich_company(domain)
  uri = URI("#{BASE_URL}/api/enrich")

  request = Net::HTTP::Post.new(uri)
  request['Content-Type'] = 'application/json'
  request['X-API-Key'] = RECONNOITER_API_KEY
  request.body = { domain: domain }.to_json

  response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
    http.request(request)
  end

  JSON.parse(response.body)
end

# Usage
data = enrich_company('stripe.com')
puts "Lead score: #{data['lead_score']}"
puts "Company: #{data['company']['company_name']}"

Support

Questions or issues?

Found a bug?

Need higher limits?


Changelog

Version 1.1 (January 2026) - Day 10 Update 🚀

  • Enhanced Lead Scoring: Multi-dimensional scoring with 8 criteria
  • Score Breakdown: Detailed explanations and signal categorization
  • Customizable Weights: Default weights optimized for B2B SaaS (custom weights coming Week 3)
  • Positive/Negative Signals: Actionable insights for sales teams
  • Integration Endpoints: Zapier, CSV batch processing, Email parsing (Day 9)
  • Usage Tracking: Track enrichments across all endpoints and integrations

Version 1.0 (January 2025) - Week 1 Launch

  • ✅ Core enrichment API with AI-powered analysis
  • ✅ News and GitHub integrations
  • ✅ Social media extraction
  • ✅ Basic lead scoring algorithm
  • ✅ Redis caching (79x performance improvement)
  • ✅ API key authentication
  • ✅ Usage tracking and tiers (Free/Starter/Pro/Business/Enterprise)
  • ✅ Competitor monitoring with email alerts
  • ✅ Batch enrichment endpoint

Last Updated: January 8, 2026 API Version: 1.1