If you offer services that aren't available year-round, such as seasonal landscaping, holiday decoration, tax prep, and annual inspections, Google's crawlers see those services as always available or never available unless you mark them up correctly. The difference between a booking bot and a dead listing often comes down to a single schema property that most service businesses skip.

Why Standard Service Schema Doesn't Work for Seasonal Work

The Service schema type includes an availability field, but it's designed for availability by day of week or time of day. When you mark a service as available, schema crawlers assume it's available in that format permanently. A tax preparation service marked as available Monday–Friday becomes invisible starting April 16. A snow removal service marked as unavailable in July blocks your July visibility when customers search early for winter bookings.

The schema property you need is `availabilityStarts` and `availabilityEnds`. These dates tell Google when a specific service becomes bookable and when it stops. Without them, you're either permanently advertising something you only do in February, or you're delisting it incorrectly.

The Markup Structure That Works

Use the LocalBusiness or Service schema with the `availableService` property. Inside that, nest the specific service object with `availabilityStarts` and `availabilityEnds` as ISO 8601 dates. Include the `potentialAction` object so Google knows it's bookable, not just descriptive.

The crawl sees an unavailable service as dead inventory. It stops showing it in local results, stop-by cards, and Knowledge Panels. One date field difference moves your listing from visible to ghost.

Common Mistakes That Break Seasonal Markup

The first mistake is hardcoding availability into your markup and forgetting to update it. If your schema says availability ends March 31 and it's April 2, Google's crawlers index that as a past date. The service moves to a "no longer available" state even if you're still offering it.

The second is mixing availability states. You might mark a service as available on Tuesday–Thursday, then also set availabilityEnds to June 30. Google's schema validator accepts both, but crawlers prioritize the more restrictive rule. The service becomes unavailable starting Thursday of the week after June 30 ends, not on July 1.

The third is forgetting the `areaServed` property when you operate across multiple locations with different seasonal windows. A snow removal service available in the northeast from November–March looks the same to schema as one available in a southern location December–February. Crawlers can't differentiate without explicit geography.

How to Validate Before It Costs You Visibility

Use Google's Rich Results Test with your full page markup. The validator will flag missing dates or format errors immediately. More important: test with a date that's currently live (today's date should fall between availabilityStarts and availabilityEnds). If it doesn't, Google won't surface the service.

After deployment, check Google Search Console's Rich Results section under Enhancements. Look for "Service" results. If your seasonal service disappears from that report the day after its availabilityEnds date passes, the markup worked; now you know your deadline for updating next season.

See who Google and AI recommend instead of you

Enter your website and get a free check of what Google and AI actually read about your business — and who they point people to instead. No call, no account: the report renders right on the page.

Run my free check →

Rather have it done for you? In the AEO Fix Sprint we implement your report's fixes on your site in 5 business days →

Share this article

X (Twitter) LinkedIn Facebook WhatsApp

Comments

Leave a comment

← Back to all articles