Using the API

Scraping the Jobs

  1. Sign up for APIFY

  2. Get our Upwork Auto Apply bot in the marketplace.

  3. Scrape Upwork jobs

You must pass the job application URL to our API. To get this URL, we recommend using this APIFY actor. If you are not a developer, you can use our no-code tool here and we'll handle scraping the jobs for you.

  1. Filter to remove less relevant jobs from the jobs scraper. You can filter based on keywords, previous spend on Upwork, budget, country, etc.

Setting a minimum previous spend results in more relevant results.

  1. Convert the job URL to this format

https://www.upwork.com/ab/proposals/job/{Job_ID}/apply/#/

Using the API

POST https://api.apify.com/v2/acts/big-brain.io~upwork-application/runs?token={APIFY API Key}

Apply to jobs on Upwork automatically.

Headers

Name
Value

Content-Type

application/json

Body

Name
Type
Description
Required

username

string

Your Upwork login username

Yes

password

string

Your Upwork login password

Yes

startUrls

array

Application URL

Yes

coverLetter

string

The cover letter you will apply with.

Yes

defaultAnswer

string

How you will answer questions beyond the cover letter. Suggested, "Let's get on a call"

Yes

proxyConfig

array

Use a static proxy

Yes, should be a static proxy

useApifyProxy

boolean

Set to true

Yes

apifyProxyGroup

string

Your proxy group from the APIFY proxy page.

Yes

debugMode

boolean

Set to true to receive extra insights into your run

No

testMode

boolean

If set to true, it will go through all the actions but not apply. Set to false to apply.

No

agency

string

The name of the agency profile you want to apply to. Leave empty if filling out the freelancer field.

Required if Freelancer is not set. If Freelancer is set, should be left blank.

freelancer

string

The name of the freelancer profile you want to apply to. Leave empty if filling out the agency field.

Required if Agency is not set. If Agency is set, should be left blank.

autoRefill

boolean

If set to true, the bot will buy more Upwork credits as needed with your payment method on file.

No

autoRefillAmount

string

The amount of credits to auto refill. The possible values are "10" "20" "40" "60" "80" "100" "150" "200" "250" "300" Default is "100"

No

ignoreDuplicateProposals

boolean

If set to false, an error will be created if you've already applied. If set to true, no error will be created if you already applied.

No

boostProposal

boolean

Optionally, boost your proposal

No

stepSize

integer

If boosting your proposal, the amount of credits you want to bid higher than the previous highest bid.

Required if boostProposal is set to true

maxBid

integer

If boosting your proposal, the maximum amount of credits you want to bid.

Required if boostProposal is set to true

Input Example

{
  "username": "[email protected]",
  "password": "Password123!",
  "startUrls": [
    {
      "url": "https://www.upwork.com/ab/proposals/job/~021894229602886060807/apply/",
      "method": "GET"
    }
  ],
  "coverLetter": "Hi, \n\nIt is great to connect with you! I am a lawyer with international experience in corporate commercial law, contracts, IP, and technology law. I have law degrees and specialization certificates in data privacy, and regulatory compliance. I have also worked with dozens of clients in multiple industries across multiple jurisdictions where I address various issues including but not limited to contractual obligations; IP rights; compliance policies; privacy policies, etc. \n\nCan you kindly provide more details about this project. I would be happy to jump on a call if that works for you. \n\nI look forward to your reply. \n\nThank you. \n\nRegards",
  "defaultAnswer": "Let's get on a call and I will answer all of your questions.",
  "securityQuestion": "Answer",
  "proxyConfig": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "StaticUS3"
    ]
  },
  "debugMode": true,
  "testMode": false,
  "agency": "",
  "freelancer": "Example Contact",
  "autoRefill": true,
  "autoRefillAmount": "100",
  "ignoreDuplicateProposals": true,
  "stepSize": 1,
  "maxBid": 20,
  "boostProposal": true
}

Use a Static Proxy. Do not use a Residential Proxy. You may need to message APIFY support to enable Static Proxies. You can also use custom proxies.

Notes

Proxy Configuration

Use a Static proxy - residential proxies do not work on this actor.

Application URL

Application URLs are different than job URLs. This actor uses Application URLS. Job URL - https://www.upwork.com/jobs/~{Job_ID} - Do not use this type of URL. Extract the Job ID and turn it into the application URL. Application URL - https://www.upwork.com/ab/proposals/job/~{Job_ID}/apply/# - This is the correct url to use. The Job ID always includes ~ Freelancer and Agency Parameters

You must fill out either the freelancer or agency parameter - do not fill out both. This should be your name / agency exactly as it appears on Upwork.

No-Code App

This actor requires you to scrape jobs and pass the application URL that you gather externally as an input. Don't want to have to scrape jobs yourself? Check out our no-code app, and we'll handle the scraping for you, as well as native filtering for jobs, proxy configuration, scheduling, AI personalization in your cover letter, and Slack integrations to have the option to reject jobs before they are applied to.

Get in Touch

Book a Meeting

Book a Meeting

Get in Touch

Reach out to [email protected] if you have any questions, want a demo, or to report a bug.

Last updated