ABM Outbound
Multi-channel ABM automation that turns LinkedIn URLs into coordinated outbound campaigns. Scrapes profiles, enriches with Apollo (email + phone), gets mailing addresses via Skip Trace, then orchestra
Multi-channel ABM automation that turns LinkedIn URLs into coordinated outbound campaigns. Scrapes profiles, enriches with Apollo (email + phone), gets mailing addresses via Skip Trace, then orchestra
Real data. Real impact.
Emerging
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
Turn LinkedIn prospect lists into multi-channel outbound: email sequences, LinkedIn touches, and handwritten letters.
| Service | Purpose | Sign Up |
|---|---|---|
| Apify | LinkedIn scraping, Skip Trace | apify.com |
| Apollo | Email & phone enrichment | apollo.io |
| Scribeless | Handwritten letters | platform.scribeless.co |
| Instantly (optional) | Dedicated cold email | instantly.ai |
export APIFY_API_KEY="your_key" export APOLLO_API_KEY="your_key" export SCRIBELESS_API_KEY="your_key"
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ 1. INPUT │───▶│ 2. SCRAPE │───▶│ 3. ENRICH │───▶│ 4. ADDRESS │───▶│ 5. OUTREACH │ │ LinkedIn │ │ Profiles │ │ Email/Phone │ │ Skip Trace │ │ │ │ URLs │ │ │ │ │ │ │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ Your list Apify Apollo Apify PFI Email + LinkedIn + Scribeless
Provide a list of LinkedIn profile URLs from:
linkedin_url https://linkedin.com/in/johndoe https://linkedin.com/in/janesmith
curl -X POST "https://api.apify.com/v2/acts/harvestapi~linkedin-profile-scraper/run-sync-get-dataset-items" \ -H "Authorization: Bearer $APIFY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "profileUrls": [ "https://linkedin.com/in/johndoe", "https://linkedin.com/in/janesmith" ] }'
Returns: First name, last name, company, title, location.
curl -X POST "https://api.apollo.io/api/v1/people/bulk_match" \ -H "X-Api-Key: $APOLLO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "reveal_personal_emails": true, "reveal_phone_number": true, "details": [{ "first_name": "John", "last_name": "Doe", "organization_name": "Acme Corp", "linkedin_url": "https://linkedin.com/in/johndoe" }] }'
Returns: Work email, phone numbers.
curl -X POST "https://api.apify.com/v2/acts/one-api~skip-trace/run-sync-get-dataset-items" \ -H "Authorization: Bearer $APIFY_API_KEY" \ -H "Content-Type: application/json" \ -d '{"name": ["John Doe"]}'
Returns: Street address, city, state, postal code.
Important: Verify Skip Trace state matches LinkedIn location.
Option 1: Apollo Sequences (Recommended)
curl -X POST "https://api.apollo.io/api/v1/emailer_campaigns/add_contact_ids" \ -H "X-Api-Key: $APOLLO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "emailer_campaign_id": "YOUR_SEQUENCE_ID", "contact_ids": ["CONTACT_ID_1", "CONTACT_ID_2"], "send_email_from_email_account_id": "YOUR_EMAIL_ACCOUNT_ID" }'
Option 2: Instantly.ai
curl -X POST "https://api.instantly.ai/api/v1/lead/add" \ -H "Authorization: Bearer $INSTANTLY_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "campaign_id": "YOUR_CAMPAIGN_ID", "email": "john@acme.com", "first_name": "John", "last_name": "Doe", "company_name": "Acme Corp", "personalization": "Saw Acme just expanded to UK" }'
Option 3: CSV Upload
email,first_name,last_name,company,title,phone,personalization john@acme.com,John,Doe,Acme Corp,VP Marketing,555-1234,Saw Acme just expanded to UK
Create campaign at platform.scribeless.co, then add recipients:
curl -X POST "https://platform.scribeless.co/api/recipients" \ -H "X-API-Key: $SCRIBELESS_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "campaignId": "YOUR_CAMPAIGN_ID", "data": { "firstName": "John", "lastName": "Doe", "company": "Acme Corp", "address": { "address1": "123 Main St", "city": "San Francisco", "state": "CA", "postalCode": "94102", "country": "US" }, "variables": { "custom1": "Saw Acme just expanded to the UK — congrats!" } } }'
See references/scribeless-api.md for full API details.
| Day | Letter | ||
|---|---|---|---|
| 1 | — | View profile | Letter sent |
| 3 | — | Connection request | — |
| 5 | "Got my note?" | — | Letter arrives |
| 7 | Value email | Message if connected | — |
| 10 | Case study | — | — |
| 14 | Break-up | Engage content | — |
The play: Letter lands → Email references it → LinkedIn reinforces.
# 1. Start with LinkedIn URLs linkedin_urls = load_csv("prospects.csv")2. Scrape profiles
profiles = apify_linkedin_scrape(linkedin_urls)
3. Enrich with Apollo
for profile in profiles: enriched = apollo_bulk_match(profile) profile['email'] = enriched['email'] profile['phone'] = enriched['phone']
4. Get mailing addresses
for profile in profiles: address = skip_trace(profile['name']) if address['state'] == profile['linkedin_state']: profile['address'] = address profile['mailable'] = True
5. Push to channels
push_to_email_tool(profiles) push_to_scribeless(profiles, campaign_id) export_for_linkedin(profiles)
first_name,last_name,email,phone,company,title,address1,city,state,postal,country,linkedin,mailable John,Doe,john@acme.com,555-1234,Acme Corp,VP Marketing,123 Main St,San Francisco,CA,94102,US,linkedin.com/in/johndoe,TRUE
No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.