Skip to main content

Advanced Keyword Search

Advanced keyword search lets you build precise queries using operators like AND, OR, and NOT, so you can find exactly the jobs you want and filter out the ones you don't. You'll find it in All Filters → Advanced Search.

Written by Jake

The three fields

You can write a separate query for each of these. They work together, so a job must match every field you fill in:

  • Job title searches the job's title only.

  • Full description searches the entire posting.

  • Requirements searches the qualifications and requirements section.

As you type, each field shows a live match count so you can see how many jobs your query hits before you apply it.

Operators

AND, OR, NOT

The three core operators. They must be UPPERCASE.

  • AND requires both: python AND django

  • OR matches either: react OR vue

  • NOT excludes: python NOT php or python AND NOT php (both work the same)

Require or exclude single terms (+ and -)

A quick way to stack requirements without writing AND everywhere:

  • + means the term must appear: +react +typescript

  • - means the term must not appear: -php -wordpress

  • Mix them: +python (django OR flask) -php

Exact phrases ("...")

Put quotes around words that must appear together, in order:

  • "product manager" matches that exact phrase.

  • Without quotes, product manager matches jobs containing both words anywhere, so it would also match "product-focused engineering manager".

Grouping (( ))

Parentheses combine logic and build "any of these" lists:

("machine learning" OR "deep learning") AND python
(react OR vue OR svelte OR angular)


Wildcards (* and ?)

The search does not automatically match word variations, so wildcards are how you catch them:

  • * matches any run of characters: develop* matches developer, development, developing, develops.

  • ? matches a single character: analy?e matches analyze and analyse.

Rule: a wildcard cannot be the first character of a word. Put it at the end (engineer*) or middle (te*t), never the start (*script is not allowed).

Fuzzy matching (~)

Add ~ to a word to tolerate typos and small spelling variations in the posting:

  • kubernetes~ still matches a posting that wrote "kubernets".

  • manager~2 allows up to 2 character edits.

Useful for hard-to-spell tools and typo-prone titles.

Proximity search ("..."~N)

Add ~N to a quoted phrase to match when the words appear near each other, not necessarily side by side. N is how far apart they can be.

"software developer"~4

This matches "Software Developer", "Software Application Developer", "Senior Software Developer", and even "Developer of enterprise Software", but not a posting where the two words are far apart. Proximity is the sweet spot between an exact phrase (too strict) and two loose AND terms (too broad).

Escaping special characters (\)

Some characters (+ - ( ) * ? ~ " :) have special meaning. To search for one literally, put a backslash in front of it:

  • c\+\+ matches "C++"

  • c\# matches "C#"

For hyphenated words, a quoted phrase is usually easier: "full-time" instead of full\-time.

Good to know

  • Operators must be UPPERCASE. python and django treats and as a search word, not an operator. Mis-typed operators get a red underline with a suggested fix.

  • A search cannot be only an exclusion. NOT "php" on its own returns nothing, because there is no set of jobs to subtract from. Always pair an exclusion with something to include: engineer AND NOT "php". If you truly want "all jobs except X", use a broad match as the base: "*a*" NOT "php".

  • NOR is not supported. To exclude several things, use NOT (a OR b) or -a -b.

  • No word stemming. engineer does not automatically match "engineering". Use a wildcard (engineer*) to catch every form.

  • Matching is case-insensitive. Python and python return the same jobs. (This is separate from the uppercase-operator rule.)

  • The match count ignores your other filters. The number next to each field is a direct match of that query against all current, non-expired jobs, so it can be higher than the results you see once your other filters and date range apply.

Example queries

Frontend roles, no contract or intern work (Job title):

(react OR vue OR angular) AND NOT (contract OR intern)

Senior data roles mentioning a specific stack (Full description):

("machine learning" OR "data science") AND python* AND (aws OR gcp)

Nursing roles, flexible on spelling, night shifts (Requirements):

nurs* AND "night shift"~3 AND NOT travel

C++ backend, excluding gaming (Full description):

c\+\+ AND (backend OR systems) AND NOT (game OR gaming)

Common mistakes

Mistake

Fix

react and vue (lowercase operator)

react AND vue

manager misses "managing"

manag*

*script (wildcard at the start)

script* or * in the middle

NOT "php" by itself (returns nothing)

engineer AND NOT "php"

NOR sales

NOT sales

"product manager" misses "product application manager"

"product manager"~3

c++ treated as operators

c\+\+ or "c++"

Did this answer your question?