Moxlade
Checking your account
View as Markdown

Filter reference

One filter object is used in three places: search_jobs takes it as filters, save_search takes it as prefilter, and check_prefilter validates one and tells you how many postings it would catch. This page is that language.

Gotcha

A field name that is not in the catalogue is refused, not quietly ignored — so a typo fails loudly rather than widening your filter. Read the conventions below before writing your first one: three of them are not guessable, and all three produce a refusal you cannot explain from the field alone.

The five value shapes

Each field has a type, and the type decides the envelope its value takes. Text is the odd one out and worth reading twice: the operator IS the key, and there is no operator field at all.

text — the operator is the key; give one or more of them

Operators: all_words, any_words, exact_phrase, none_words

{
  "<field>": {
    "all_words": "python scraper",
    "none_words": "wordpress"
  }
}

select — {"operator": , "values": [, …]}

Operators: equals, equals_all, not_equals, not_equals_any

{
  "<field>": {
    "operator": "equals",
    "values": [
      "<one of options>"
    ]
  }
}

numeric — {"operator": , "value1": ""} — "between" also needs value2

Operators: between, equals, greater_than, greater_than_or_equals, less_than, less_than_or_equals

{
  "<field>": {
    "operator": "greater_than",
    "value1": "1000"
  }
}

boolean — {"value": "Yes"|"No"} — no operator key

{
  "<field>": {
    "value": "Yes"
  }
}

date — {"operator": , "date1": "YYYY-MM-DD"} — "between" also needs date2

Operators: after, before, between, equals

{
  "<field>": {
    "operator": "after",
    "date1": "2026-01-01"
  }
}

Conventions

Three rules that no single field entry could tell you, and that produce refusals which make no sense until you know them.

Combining filters

Several fields in one object are ANDed. There is no OR across fields; to widen, loosen a clause rather than adding another. Within a text field, any_words is the OR.

{
  "_combined|title|description|skills": { "exact_phrase": "React Native" },
  "buyer_payment_verified": { "value": "Yes" },
  "total_spent": { "operator": "greater_than", "value1": "5000" }
}

Run it through check_prefilter before saving. It returns matched, and a filter that catches nothing looks exactly like a quiet market — a saved search built on one fires forever without telling you it was the filter. It also returns warnings when a clause cannot match at all, such as a numeric comparison outside the range the corpus holds.

Every field

Bounds are values observed in the corpus, not limits — a filter outside them is valid and matches nothing.

fieldtypelabelwhat it meansvalues
avg_hourly_ratenumericClient Avg Hourly RateAverage hourly rate this client typically pays freelancers. Based on their historical hiring patterns.
buyer_feedback_countnumericBuyer Feedback CountNumber of feedbacks the client has received.0–22131
buyer_payment_verifiedbooleanBuyer Payment VerifiedBoolean flag indicating whether the client has verified their payment method on Upwork.
buyer_scorenumericBuyer ScoreScore of the client's performance on Upwork.0–5
category_nameselectCategory NameMain category of the job (e.g., Web Development, Data Science, Design). Upwork's primary job classification.Accounting & Consulting, Admin Support, Customer Service, Data Science & Analytics, Design & Creative, Engineering & Architecture, …
experience_levelselectExperience LevelRequired experience level for the job. Exact values: Entry_level, Intermediate, Expert.Entry_level, Expert, Intermediate
hire_ratenumericClient Hire RatePercentage of freelancers the client has hired from total applications. Higher rates indicate clients who actively hire rather than just browse.
hiresnumericHiresTotal number of freelancers hired by the client.0–39261
named_buyerbooleanOnly named buyersKeep only jobs whose client we've identified by name (resolved via BuyerLookup) — established, researchable clients, not anonymous/brand-new ones.
pricenumericBudget/Price - Fixed-priceThe budget amount for the fixed-price job.0–1000000
price_maxnumericHourly Rate - MaxUpper end of the job's hourly rate band (Upwork jobs advertise a range like $10-35/hr). Hourly jobs only - fixed-price jobs carry their budget in price and leave this empty.3–999
price_minnumericHourly Rate - MinLower end of the job's hourly rate band (Upwork jobs advertise a range like $10-35/hr). Hourly jobs only - fixed-price jobs carry their budget in price and leave this empty.3–500
searchtextKeyword searchSearch across title + description + skills together — the main 'what work' filter.
skillstextSkillsComma-separated list of required skills and technologies for the job as specified by the client.
subcategory_nameselectSubcategory NameSpecific subcategory within the main category (e.g., Front-End Development, Machine Learning). More granular classification.3D Modeling & CAD, AI & Machine Learning, AI Apps & Integration, Accounting & Bookkeeping, Art & Illustration, Audio & Music Production, …
titletextJob TitleThe job posting title as written by the client. Contains the main description of what work needs to be done.
total_spentnumericTotal SpentTotal amount the client has spent on Upwork across all their projects.0.08–22117578.16
active_hiresnumericActive HiresNumber of freelancers currently hired by the client.0–4835
client_locationselectClient LocationGeographic location of the client posting the job.United States, United Kingdom, India, USA, Australia, Canada, …
contract_to_hirebooleanContract To HireWhether the job has potential to convert from contract to permanent employment.
descriptiontextDescriptionFull job description text as written by the client. Contains detailed requirements, expectations, and project scope.
engagement_labelselectEngagement LabelExpected duration or type of engagement (e.g., 1 to 3 months, 3 to 6 months, Less than 1 month, Less than 1 week, More than 6 months).1 to 3 months, 3 to 6 months, Less than 1 month, More than 6 months
engagement_weeksselectEngagement WeeksProject duration in weeks. Options: 1, 3, 9, 18, 52 weeks.3, 9, 18, 52
industryselectIndustryMain industry the client operates in. Select from available choices.Aerospace, Agriculture & Forestry, Art & Design, Automotive, Aviation, Education, …
job_is_premiumbooleanJob Is PremiumBoolean flag indicating whether job is premium applies to this job.
jobs_postednumericJobs PostedTotal number of jobs the client has posted on Upwork.0–39636
open_jobsnumericOpen JobsNumber of jobs the client currently has open/active.0–415
price_typeselectPrice TypeHow the job is priced: Fixed Price (one-time payment) or Hourly (paid per hour worked).Fixed-price, Hourly
qual_portfolio_requiredbooleanQual Portfolio RequiredWhether the client requires a portfolio or work samples to apply.
qual_pref_englishselectQual Pref EnglishClient's preferred English proficiency level for freelancers.ANY, CONVERSATIONAL, FLUENT, NATIVE
qual_rising_talentbooleanQual Rising TalentWhether the job is open to Upwork Rising Talent (newer freelancers with potential).
qual_typeselectQual TypeType of freelancer the client is looking for: Agency (team/company), Independent (solo freelancer), or Any (no preference).AGENCY, ANY, INDEPENDENT
total_hoursnumericTotal HoursTotal number of hours the client has worked on Upwork across all their projects.0–11820879
buyer_contract_datedateBuyer Contract DateDate when the client first registered their account on Upwork. Indicates how long the client has been active on the platform.
category_idselectCategory IDNumeric id of the job category — prefer Category Name.531770282580668416, 531770282580668417, 531770282580668418, 531770282580668419, 531770282580668420, 531770282580668421, …
client_invites_sentnumericClient Invites SentInvites the client had sent when the job was captured, minutes after posting. Clients usually send invites while creating the job, so this catches invite-first postings. 0 when the source reported none (NULLs backfilled to 0 on 2026-08-22 — before that, numeric filters silently dropped the unreported rows).0–349
client_positions_to_hirenumericClient Positions To HireNumber of client positions to hire.0–99
client_total_applicantsnumericApplicants (this job)How many freelancers have applied to this posting so far.0–67
client_total_hirednumericHired (this job)How many freelancers the client has already hired on this posting.0–41
client_total_invitednumericInvited (this job)How many freelancers the client invited to this posting.0–52
client_unanswered_invitesnumericUnanswered invitesInvites the client sent that went unanswered.0–302
company_sizeselectCompany SizeSize of the client's company. Predefined option for company size. Select from available choices.0, 1, 10, 100, 1000, 10000, …
hourly_budget_typeselectHourly Budget TypeType of hourly budget. Options: AS_NEEDED, DEFAULT, FULL_TIME, MANUAL, NOT_PROVIDED, NOT_SURE, PART_TIME.DEFAULT, MANUAL, NOT_PROVIDED
qual_min_hoursselectQual Min HoursPredefined option for qual min hours. Select from available choices.0
qual_min_hours_weekselectQual Min Hours WeekMinimum hours per week required for hourly jobs. Options: 10, 30, 40.0, 10, 30, 40
qual_min_success_scoreselectQual Min Success ScoreMinimum Upwork success score required to apply for the job.0, 80, 90
subcategory_idselectSubcategory IDNumeric id of the job subcategory — prefer Subcategory Name.531770282584862724, 531770282584862725, 531770282584862726, 531770282584862728, 531770282584862730, 531770282584862733, …