VC Investor Scraper
A powerful Python tool to scrape investor data from VCSheet.com and export to CSV format or upload directly to Odoo CRM via API.
Perfect for startups, investment firms, and business development teams looking to build comprehensive investor databases.
🚀 Features
- 🔍 Smart Keyword Filtering: Search for investors by keywords (e.g., "fintech", "AI", "marketing")
- 📊 Complete Data Extraction: Extracts names, companies, emails, social media links, investment focus, and stages
- 📁 Multiple Export Options:
- Standard CSV format
- Odoo CRM-compatible CSV format
- Direct Odoo API upload
- 🎯 Odoo Integration: Upload leads directly to your Odoo CRM with team and user assignments
- 🔄 Full Pagination: Scrapes all pages (35+ pages, 1000+ investors)
- 🛡️ Robust Error Handling: Handles network issues, parsing errors, and API failures gracefully
- ⚡ Rate Limiting: Built-in delays to respect website resources
- 🌐 Cross-Platform: Works on Windows, macOS, and Linux
📦 Installation
From PyPI (Recommended)
pip install vc-investor-scraper
From Source
git clone https://github.com/antonpavlenko/vc-investor-scraper.git
cd vc-investor-scraper
pip install -e .
Requirements
- Python 3.7+
- Internet connection
- Optional: Odoo instance for CRM integration
⚡ Quick Start
Command Line Interface
After installation, you can use the tool directly from the command line:
# Export all investors to CSV
vc-investor-scraper -o all_investors.csv
# Export investors with specific keywords
vc-investor-scraper -k "fintech" "AI" -o fintech_ai_investors.csv
# Export in Odoo-compatible format
vc-investor-scraper -k "marketing" -o marketing_investors.csv --odoo
Python API
from vcsheet_scraper import VCSheetScraper
# Create scraper instance
scraper = VCSheetScraper()
# Get all investors
investors = scraper.get_investors()
# Get investors with keywords
ai_investors = scraper.get_investors(keywords=["AI", "machine learning"])
# Save to CSV
scraper.save_to_csv(investors, "investors.csv")
Direct Odoo Upload
# Upload to Odoo CRM
vc-investor-scraper -k "AI research" --odoo-upload \
--odoo-url "https://your-odoo.com" \
--odoo-db "your_database" \
--odoo-user "your_username" \
--odoo-password "your_password" \
--odoo-team "Your Sales Team" \
--odoo-user-assign "Your Name"
📋 Usage Examples
1. Marketing Investors
vc-investor-scraper -k "marketing" -o marketing_investors.csv --odoo
2. AI & Machine Learning Investors
vc-investor-scraper -k "AI" "machine learning" -o ai_ml_investors.csv
3. Early Stage Investors
vc-investor-scraper -k "seed" "pre-seed" -o early_stage_investors.csv
4. Fintech Investors with Geographic Focus
vc-investor-scraper -k "fintech" "payments" "blockchain" -o fintech_investors.csv
5. Upload to Odoo with Team Assignment
vc-investor-scraper -k "fintech" --odoo-upload \
--odoo-url "https://your-company.odoo.com" \
--odoo-db "production" \
--odoo-user "admin" \
--odoo-password "your_api_key" \
--odoo-model "crm.lead" \
--odoo-stage "New" \
--odoo-team "Investment Team" \
--odoo-user-assign "john.doe@company.com"
6. Python Script Integration
from vcsheet_scraper import VCSheetScraper, OdooAPI
# Initialize scraper
scraper = VCSheetScraper()
# Get fintech investors
fintech_investors = scraper.get_investors(keywords=["fintech", "payments"])
# Upload to Odoo
odoo = OdooAPI("https://your-odoo.com", "db", "user", "password")
odoo.authenticate()
lead_ids = odoo.create_leads(fintech_investors, default_team="Sales Team")
print(f"Created {len(lead_ids)} leads in Odoo")
Command Line Options
Basic Options
-k, --keywords: Keywords to filter investors (e.g., 'fintech', 'AI', 'seed')-o, --output: Output CSV filename (optional when using --odoo-upload)--odoo: Generate Odoo CRM leads compatible CSV format--log-level: Set logging level (DEBUG, INFO, WARNING, ERROR)
Odoo API Options
--odoo-upload: Upload data directly to Odoo via API--odoo-url: Odoo server URL (e.g., 'https://your-odoo.com')--odoo-db: Odoo database name--odoo-user: Odoo username--odoo-password: Odoo password or API key--odoo-model: Odoo model ('crm.lead' or 'res.partner', default: crm.lead)--odoo-stage: Default pipeline stage for leads--odoo-team: Default sales team to assign leads to--odoo-user-assign: Default user to assign leads to
Output Formats
Standard CSV Format
name,company,website,description,focus,location,stage,email,linkedin,twitter,crunchbase,youtube,check_size
John Doe,Acme Ventures,https://acme.vc,Bio and description,AI,San Francisco,Seed,john@acme.vc,linkedin.com/in/johndoe,twitter.com/johndoe,crunchbase.com/person/john-doe,,
Odoo-Compatible CSV Format
External ID,Name,Company Name,Contact Name,Email,Job Position,Phone,Mobile,Street,Street2,City,State,Zip,Country,Website,Notes
1,John Doe,Acme Ventures,John Doe,john@acme.vc,Investor,,,,,,,,,https://acme.vc,"Company: Acme Ventures; Focus Areas: AI; Bio: ...; LinkedIn: ...; Source: VCSheet.com"
Odoo Integration
Setting Up Odoo API Access
-
Get API Key (recommended):
- Log into Odoo → Settings → Users & Companies → Users
- Click your user → Preferences tab → API Keys section
- Create new API key
-
Or use regular password (less secure)
Odoo Configuration Requirements
- CRM module must be installed
- User permissions: Create/write access to CRM leads
- Sales teams: Must exist if using --odoo-team
- Users: Must exist if using --odoo-user-assign
What Gets Created in Odoo
For CRM Leads (crm.lead):
- Lead name: Investor's name (without "Investor:" prefix)
- Contact name, company, email, website
- Comprehensive description with bio, focus areas, investment stages
- All social media links in description
- UTM source tracking ("VCSheet.com")
- Optional stage, team, and user assignment
📊 Data Extracted
For each investor, the scraper extracts:
- Basic Info: Name, company/fund, email, website
- Professional: Investment focus areas, stages, bio/description
- Social Media: LinkedIn, Twitter, Crunchbase, YouTube profiles
- Metadata: Source tracking, external IDs
Sample Data Output
name,company,website,description,focus,stage,email,linkedin,twitter
John Doe,Acme Ventures,https://acme.vc,"Partner at Acme Ventures focusing on early-stage startups","AI, SaaS","Seed, Series A",john@acme.vc,linkedin.com/in/johndoe,twitter.com/johndoe
🎯 Use Cases
- Startup Fundraising: Build targeted investor lists for your industry
- Business Development: Identify potential partners and advisors
- Market Research: Analyze investment trends and focus areas
- CRM Integration: Automatically populate your sales pipeline
- Lead Generation: Create comprehensive prospect databases
Error Handling
The scraper includes robust error handling for:
- Network connectivity issues
- Website structure changes
- Odoo API authentication failures
- Invalid search parameters
- Rate limiting and timeouts
Rate Limiting
- Built-in delays between page requests (1-2 seconds)
- Respectful scraping practices
- Configurable timeouts and retries
🤝 Contributing
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Add tests if applicable
- Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Submit a pull request
Development Setup
git clone https://github.com/antonpavlenko/vc-investor-scraper.git
cd vc-investor-scraper
pip install -e ".[dev]"
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
⚠️ Disclaimer
This tool is for educational and business purposes. Please respect VCSheet.com's terms of service and use responsibly. The authors are not responsible for any misuse of this tool.
🆘 Support
- Documentation: GitHub README
- Issues: GitHub Issues
- PyPI: Package Page
🏆 Acknowledgments
- Built for the startup and investment community
- Inspired by the need for better investor discovery tools
- Thanks to VCSheet.com for providing comprehensive investor data
Made with ❤️ for the startup ecosystem
Star ⭐ this repo if you find it useful!
Metadata
Release files for vc-investor-scraper 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| vc_investor_scraper-1.0.0.tar.gz | 17.9 kB | Without provenance | Details for vc_investor_scraper-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| vc_investor_scraper-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for vc_investor_scraper-1.0.0-py3-none-any.whl |
Total release size: 34.2 kB
Release files / vc_investor_scraper-1.0.0.tar.gz
| Download URL | vc_investor_scraper-1.0.0.tar.gz |
|---|---|
| Size | 17.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
70204064d0262ca63f1538b99de9ebbf1891fe2519ac4ebb0d00e0231563a973
|
|
BLAKE2b-256 checksum How to use checksums |
618ec0f63f202d19ac0d23644a12385c3c45dcaa5e582989bd477b15a8160bc3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.6
|
Release files / vc_investor_scraper-1.0.0-py3-none-any.whl
| Download URL | vc_investor_scraper-1.0.0-py3-none-any.whl |
|---|---|
| Size | 16.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
31619ec84fa2dfc87c84e5510d1bde45883f1c6c0b5d3e6ff18f51cae11e1cf9
|
|
BLAKE2b-256 checksum How to use checksums |
01c0e851fa260b44a3450c55730a75199a702ca0202c6c7ba31a03eef264a875
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.6
|
Security for vc-investor-scraper 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.