Recruiting and staffing
The hiring manager and the candidate may both ask an assistant first. Its answer can only repeat what your pages state.
A hiring manager types "staffing agency that places CNC machinists in Grand Rapids" while a candidate, an hour later, asks "is this recruiter legit and do they take a cut of my pay". The same agency site has to answer both. GEO for recruiting and staffing agencies is making sure it does, in text an assistant can read.
A hiring manager's or a candidate's question about a staffing agency asks for what the agency's own site can state: the roles and industries it places in plain words, the cities it covers, how it charges and who pays, how fast it can fill a shift or a seat, who the recruiters are, and reviews from both sides. "We staff every industry" is the sentence that answers nobody's question.
How your customers ask
The hiring manager, the candidate and the 6 a.m. surge: three ways people ask
Two buyers and a third moment: who asks, and what each has to find
The hiring manager names the role, the industry and the city, and wants three things: evidence you have placed that role there before, how the fee works (a share of first-year salary on contingency, an hourly markup for temporary staff, a retained search), and how long it takes. With web search on, an AI assistant has only your pages to answer the role and the city from, and can only repeat a fee model it finds there.
The candidate asks whether you are real and whether they pay. If the employer pays and the candidate pays nothing, write that sentence. A candidate who cannot find it may assume the worst, and an assistant asked "is this agency legitimate" answers from what it can read: a street address, named recruiters, the registrations your state requires, reviews from people you placed.
The third moment is the surge: a plant manager at 6 a.m. who needs 20 people by Monday. That question is about capacity and speed: how many, how fast, which shifts, which certifications, who answers the phone now. A page that states typical fill times and the hours a person answers, in text, is the page that can get that call.
Niche beats the list. A page that names forty industries answers "CNC machinists in Grand Rapids" no better than a blank page. Name the roles and the cities you place most, each on its own page, and let the list go.
What a staffing agency site has to state before an assistant can name it
Both of them are asking an assistant that reads your HTML the way an AI crawler does; for ChatGPT, OpenAI's crawler documentation names ChatGPT-User as the fetcher that opens your page when someone asks about you. It does not know your fill rate from your reputation. It knows what the page states.
| What to state | Where it belongs | In what form |
|---|---|---|
| Roles and industries | One page per specialty | "CNC machinists", "travel nurses", "controllers and accounting managers", "warehouse and forklift"; the roles you place most, not an industry list |
| Cities and markets | Each specialty page and the contact page | Cities by name; areaServed in the markup; an office address per market where there is one |
| Fee model and who pays | A "how it works" page for employers and one for candidates | Contingency, retained or hourly markup, in words; "the employer pays; candidates pay nothing" if that is true |
| Speed and capacity | Specialty pages | Typical time to a first shortlist or a filled shift; how surge requests are handled; the hours a person answers |
| The recruiters | Team page | Names, roles, markets and specialties, as text |
| Legitimacy signals | Footer, about page, markup | Legal name, street address, phone number, the registrations or licenses your state requires, as text |
| Reviews from both sides | Homepage or a reviews page | Client reviews and placed-candidate reviews quoted as text, with a first name, a month and the platform; no platform rating in the markup |
| The business type | JSON-LD on every page | EmploymentAgency with address, telephone, areaServed, openingHoursSpecification, and a Service node per specialty |
EmploymentAgency is a LocalBusiness subtype on schema.org, so the fields Google documents for local business markup apply: name, address, telephone, opening hours and geo, one set per office. Each specialty can be a Service node with serviceType and areaServed, and sameAs ties the agency on your site to the profiles you keep elsewhere. Google recommends JSON-LD and says to mark up only what a visitor can see.
The candidate's question and the hiring manager's question are answered by the same fields. An assistant asked whether an agency is legitimate reads the about page, the contact page and the reviews; an assistant asked who places controllers in Omaha reads the specialty pages. Both need the legal name, the address and the fee sentence in text, and neither can use a badge.
What our crawl found, and why the identity figures matter most here
For our audit of 9,483 small business websites, a crawler that ran no JavaScript and obeyed robots.txt visited the homepage, contact page and about page of sites in 40 trades and 90 metros between late August and early September 2026. The audit publishes no separate cut for staffing agencies; the figures describe the whole sample, and the method section says how it was drawn.
43.1% of sites were inconsistent about who and where they are across their own three pages; 36.9% published more than one phone number, and 34.1% had no postal address a machine could parse. For an agency that candidates check before replying, an address a machine cannot read is a poor answer to "is this real".
Most (61.5%) had no question-and-answer content, and 50.7% put a question in a heading without an answer under it that a machine could separate out. "Do you charge candidates?" as a heading over a paragraph about values is the staffing version.
Reviews were invisible to the crawler on 64.7% of sites, and rating markup appeared on 8.9%. 17.8% had no schema.org markup at all; of the 82% that did, most described the website rather than the business.
In the audit's probe, one buyer question per business put to Claude with web retrieval on named 14.9% of 9,240 businesses: a direction, not a rate. Of every name given, 99.4% were actual businesses and 0.6% were directories or aggregators. Google's first page for those questions was mostly aggregators; the assistant's answer was not.
What to fix first, in order
- Legal name, one address and one phone number, in text on every page and in the markup.
- Who pays, in one sentence, on the candidate page and on the employer page.
- One page per specialty by role and city, with the fee model and the typical fill time.
EmploymentAgencyin JSON-LD on every page, with the fields filled and aServicenode per specialty, describing only what the page shows.- Reviews from clients and from placed candidates as text, with a first name, the month and the platform. Under Google's review snippet rules, ratings from other websites may not be aggregated, and a business that controls the reviews about itself gets no review stars, so no platform rating goes in the markup.
- The questions both sides ask on the first call, as headings with a real answer under each.
- Check what a crawler receives: the crawler access check for robots.txt, and the source of a specialty page with scripts off.
A staffing agency's place in an answer is not for sale, and no agency of our kind can fix one for you. What the list does is make both of your buyers' questions answerable from your own pages; a monthly panel of their questions tells you whether the answers now name you.
Go deeper
Articles for recruiting and staffing agencies
Fundamentals
AI visibility for recruiters: a client reading and a candidate reading
Local & Industries
What clients and candidates ask about recruiters, in the order they ask
AI Engines
What ChatGPT and Perplexity can reach on a recruiting agency's site
Brand & Positioning
Niche or grab-bag: a desk page for each specialty your placements back
Authority & Mentions
Temp staffing: your licenses and terms, stated for clients and workers
What agency owners ask
Half our candidates come from the job boards. Why does our own site matter?
Because the candidate who saw your posting on a board may ask an assistant whether you are legitimate before applying, and with web search on, what the answer says about you comes from what it can read: the address, the named recruiters, the sentence about who pays, the reviews. The posting brought them; the site decides whether they reply. The same page answers the hiring manager's version of the question.
We place in a lot of industries. Do we have to pick one?
No, but you have to name the roles you place most, by role and city, each on its own page. Three specialty pages that state roles, cities, fee model and fill times give an answer something specific to repeat; a list of forty industries gives it nothing.
Should we publish our fee?
Publish the model, and the number if you are comfortable: contingency as a share of first-year salary, retained, or an hourly markup for temporary staff. The hiring manager typed "what do they charge", and an assistant answers from the pages that say. If you publish no number, state which model applies and, if it is true, that candidates pay nothing.
Which schema type is right for a staffing agency?
EmploymentAgency, a LocalBusiness subtype on schema.org. Put it in JSON-LD on every page with the legal name, address, telephone, openingHoursSpecification and areaServed, add sameAs links to the profiles that are yours, and describe each specialty as a Service node with serviceType and areaServed. Markup with the type but not the fields is common: 13.7% of audited sites had business schema that left the usable fields out.