Upwork Auto Applier avatar
Upwork Auto Applier

Pricing

$50.00/month + usage

Go to Apify Store
Upwork Auto Applier

Upwork Auto Applier

Automatically apply to multiple Upwork jobs with customized cover letters and intelligent preferences.

Pricing

$50.00/month + usage

Rating

0.0

(0)

Developer

Philemon Berhane

Philemon Berhane

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

3

Monthly active users

5 days ago

Last modified

Share

πŸš€ Upwork Auto Applier

Automatically apply to multiple Upwork jobs with customized cover letters and intelligent preferences

✨ Features

  • 🎯 Batch Job Applications - Apply to 1-100 jobs in one run
  • πŸ€– Smart Profile Selection - Auto-detect best profile based on job keywords
  • πŸ“ Custom Cover Letters - Personalized cover letter for each job
  • βš™οΈ Configurable Preferences - Set contract duration, raise frequency, etc.
  • πŸ”„ Bidding Job Handling - Skip or auto-bid on bidding-only jobs
  • πŸ“Š Detailed Tracking - Success/error/skipped status for each job
  • 🌐 Browser Extension - Real browser interaction for manual login and Cloudflare
  • πŸ’Ύ Session Persistence - Save login sessions between job batches

πŸš€ Quick Start

Step 1: Install Chrome Extension

Step 2: Prepare Your Jobs

  • Collect Upwork job URLs (e.g., https://www.upwork.com/nx/proposals/job/~abc123/apply/)
  • Write personalized cover letters for each job
  • Configure your application preferences

Step 3: Run the Actor

  • Actor will automatically create a session
  • Look for the session ID in the console output

Step 4: Connect Extension

  • Open the extension popup and enter the Session ID
  • Click "Connect to Service"
  • Navigate to Upwork and log into your account
  • Handle any Cloudflare challenges or 2FA
  • Open the extension popup and click "I'm logged into Upwork"

Step 5: Watch It Work

  • The extension automatically applies to all your jobs
  • Monitor progress in real-time
  • View results in the Apify dataset

Local Testing:

  1. Extension Installed - Browser extension loaded and ready
  2. Manual Login - Navigate to Upwork.com and login manually
  3. Auto Processing - Extension applies to all jobs automatically

πŸ“‹ Input Configuration

Required Fields

{
"jobs": [
{
"jobUrl": "https://www.upwork.com/nx/proposals/job/~abc123/apply/",
"coverLetter": "Your personalized cover letter..."
}
],
"applicationPreferences": {
"profileMapping": [...],
"fixedPricePreferences": {...}
}
}

Application Preferences

Profile Mapping

Map job keywords to your specialized profile indices:

"profileMapping": [
{
"tokenKeywords": ["full stack", "backend", "frontend"],
"profileIndex": 1
},
{
"tokenKeywords": ["mobile", "ios", "android"],
"profileIndex": 2
}
]

Fixed-Price Preferences

Configure contract settings:

"fixedPricePreferences": {
"projectDuration": "1 to 3 months",
"raiseFrequency": "Never",
"raiseAmount": "10%"
}

Browser Persistence

Configure session management to avoid repeated logins:

"browserPersistence": {
"enabled": true, // Enable/disable persistence
"sessionTimeout": 24, // Session validity in hours
"autoSave": true, // Automatically save sessions
"fallbackToManual": true // Fall back to manual login if restoration fails
}

Other Settings

{
"skipBiddingOnly": true,
"genericScreeningResponse": "I'd be happy to discuss this in detail...",
"delayBetweenJobs": 30,
"cfTimeoutSec": 600,
"manualLoginTime": 120
}

πŸ“Š Output Results

The actor outputs detailed results for each job:

Success

{
"jobNumber": 1,
"jobUrl": "https://www.upwork.com/nx/proposals/job/~abc123/apply/",
"status": "submitted",
"submittedAt": "2024-01-15T10:30:00.000Z"
}

Skipped

{
"jobNumber": 2,
"jobUrl": "https://www.upwork.com/nx/proposals/job/~def456/apply/",
"status": "skipped",
"reason": "bidding_only",
"skippedAt": "2024-01-15T10:35:00.000Z"
}

Error

{
"jobNumber": 3,
"jobUrl": "https://www.upwork.com/nx/proposals/job/~ghi789/apply/",
"status": "error",
"error": "Submit button not found",
"failedAt": "2024-01-15T10:40:00.000Z"
}

πŸ“‹ Input Configuration

Required Fields

{
"jobs": [
{
"jobUrl": "https://www.upwork.com/nx/proposals/job/~abc123/apply/",
"coverLetter": "Your personalized cover letter..."
}
],
"applicationPreferences": {
"profileMapping": [...],
"fixedPricePreferences": {...}
}
}

Optional Fields

{
"loginTimeout": 5, // Minutes to wait for login
"delayBetweenJobs": 30, // Seconds between jobs
"keepAlive": true, // Keep browser open between batches
"reuseSessionId": "abc123-def456" // Reuse existing session
}

βš™οΈ Configuration Examples

Basic Setup (Minimal)

{
"jobs": [
{
"jobUrl": "https://www.upwork.com/nx/proposals/job/~abc123/apply/",
"coverLetter": "Hi! I'm excited about this React project..."
}
],
"applicationPreferences": {
"defaultProfileIndex": 0,
"fixedPricePreferences": {
"projectDuration": "1 to 3 months",
"raiseFrequency": "Never"
}
}
}

Advanced Setup (Full Features)

{
"jobs": [
{
"jobUrl": "https://www.upwork.com/nx/proposals/job/~job1/apply/",
"coverLetter": "Custom cover letter for job 1..."
}
],
"applicationPreferences": {
"profileMapping": [
{
"tokenKeywords": ["react", "javascript", "frontend"],
"profileIndex": 1
}
],
"defaultProfileIndex": 0,
"fixedPricePreferences": {
"projectDuration": "1 to 3 months",
"raiseFrequency": "Never",
"raiseAmount": "10%"
}
},
"loginTimeout": 5,
"delayBetweenJobs": 30,
"keepAlive": true
}

πŸ“Š Output Results

The actor outputs detailed results for each job:

Success

{
"jobNumber": 1,
"jobUrl": "https://www.upwork.com/nx/proposals/job/~abc123/apply/",
"status": "submitted",
"submittedAt": "2024-01-15T10:30:00.000Z"
}

Skipped

{
"jobNumber": 2,
"jobUrl": "https://www.upwork.com/nx/proposals/job/~def456/apply/",
"status": "skipped",
"reason": "bidding_only",
"skippedAt": "2024-01-15T10:35:00.000Z"
}

Error

{
"jobNumber": 3,
"jobUrl": "https://www.upwork.com/nx/proposals/job/~ghi789/apply/",
"status": "error",
"error": "Submit button not found",
"failedAt": "2024-01-15T10:40:00.000Z"
}

πŸ”§ Troubleshooting

Common Issues

Browser doesn't open

  • Check Apify actor memory settings (minimum 2GB)
  • Ensure headless: false for local testing (automatically set to true on Apify platform)
  • On Apify platform, the browser runs in headless mode (no visible window)

Login timeout

  • Increase manualLoginTime if you need more time to navigate and login
  • Default is 120 seconds (2 minutes)

Profile not found

  • Verify your profileIndex matches your Upwork profile order
  • Check that tokenKeywords match job descriptions

Skipped jobs

  • Check skipBiddingOnly setting
  • Verify job URLs are valid application pages

πŸ“ˆ Tips for Success

  1. Test with 2-3 jobs first before running large batches
  2. Use realistic delays (30+ seconds) between jobs
  3. Monitor logs for any issues during automation
  4. Keep cover letters personalized for better response rates
  5. Update profile mapping based on your actual Upwork profiles

πŸ”— Integration

Make.com (Integromat)

  • Use Apify webhook to trigger from Make.com
  • Set up scheduled runs for regular job applications
  • Connect to CRM for lead management

Zapier

  • Create Zap with Apify trigger
  • Automate job application workflows
  • Sync results to Google Sheets

πŸ“„ License

MIT License - feel free to modify and use for your projects!

🀝 Support

For issues or questions:

  • Check the troubleshooting section
  • Review Apify actor logs
  • Ensure input configuration is valid

Happy freelancing! πŸŽ‰