A recruitment agency's website is asked to do two unrelated jobs at once. It must attract candidates, who arrive from job title searches, want to see live roles and apply in under two minutes, and cost very little each. It must also attract employers, who arrive from a much smaller set of searches, want evidence you understand their sector before they will part with a fee, and are worth a multiple of anything a candidate is worth. Most agency sites solve this by leaning entirely to the candidate side — a job search box, a wall of vacancies, and an 'Employers' link buried in the navigation leading to two paragraphs about your values. That is backwards relative to where the revenue comes from. A permanent placement fee is typically a percentage of the candidate's first-year salary, and a contract placement earns a margin every hour for months, so a single client relationship can justify an acquisition cost that would be absurd on the candidate side. The two audiences need separate entry points, separate content and separate measurement, because a report that merges applications and client enquiries into one 'conversions' number tells you nothing.
On the candidate side, you are not the main character. Role searches are dominated by the large job boards and aggregators, and Google's own job listings experience sits above the organic results for most job title queries, pulling postings in from everywhere. Trying to outrank that with a page titled 'warehouse jobs in Manchester' is a long, expensive fight against domains with far more authority and far more inventory. The realistic route in is to be inside that experience rather than beneath it: valid JobPosting structured data on every vacancy, one indexable page per role with a genuine description rather than a boilerplate template, accurate posting and validity dates, and disciplined removal when a role closes. Which raises the technical problem unique to this sector — an agency site generates and expires hundreds of pages a year. Left live, filled roles accumulate into an index full of dead content and candidates landing on vacancies that closed in March. Handled well, expiry is a rule in the applicant tracking integration rather than a monthly clean-up nobody does.
The strategy that actually works on the client side is narrowness. A generalist agency competing for 'recruitment agency London' is bidding against every other generalist for a term with weak intent and heavy competition, and has nothing to say that a prospective employer could not read on fifty other sites. A specialism changes the whole picture. It gives you searches with obvious intent and little competition, it makes your content credible to both sides at once — salary benchmarks, notice period norms, hiring timelines and market commentary are read by hiring managers and candidates alike — and it gives a client a reason to choose you over the incumbent PSL. It also fixes budget timing. Candidate advertising should follow live vacancies, not run continuously, because a database of registered candidates you have no roles for is a cost and a reputational risk. Spend rises when a client hands you a difficult brief and falls when it does not, and the client-side spend is the part that runs all year.