How do I implement ProfilePage schema for SEO on my site?

CO ContentZen Team
April 01, 2026
31 min read

Profile page schema for SEO is a structured data markup you add to any page that represents a single person or organization, using the ProfilePage type from Schema.org to help Google understand who that page is about and surface richer search results. The shortest correct path is to build a JSON-LD script block that declares a ProfilePage with a mainEntity pointing to a Person or Organization, populate it with required properties like name, identifier, description, image, and sameAs links, validate it with Google's Rich Results Test, then deploy it on your live profile page and request a recrawl through Search Console. Done correctly, this markup gives Google the identity signals it needs to connect your content to its Knowledge Graph and potentially display enhanced search features for your pages.

This is for you if:

  • You manage a website with profile pages for named authors, contributors, or public figures and want Google to understand who those pages represent.
  • You run a healthcare, legal, or financial site where demonstrating author credentials and expertise directly affects how your content is evaluated.
  • You operate a platform with user profiles and want to expose identity signals like social links, credentials, and interaction statistics through structured data.
  • You handle SEO for an organization and want to strengthen its Knowledge Graph presence by marking up its official profile page.
  • You have already published author or organization pages but have not yet added any structured data to them.
  • You want to follow Google's recommended implementation process from markup creation through validation, deployment, and ongoing monitoring.

profile page schema for seo

What You Need Before Adding Profile Page Schema

Attempting to build ProfilePage structured data without the right information and access in place leads to incomplete markup, validation errors, and wasted deployment cycles. Gathering everything listed below before you write a single line of JSON-LD means you can move through implementation in one clean pass rather than stopping repeatedly to hunt down missing values or fix accessibility issues after the fact.

Before you start, make sure you have:

  • A page that is clearly focused on a single Person or Organization, not an aggregated listing of multiple people or entities.
  • The full legal or public name of the person or organization the page represents, exactly as it should appear in the markup.
  • A public handle, username, or alias to use as the alternateName field, such as a social media handle or site-specific username.
  • A unique internal identifier for the entity within your site, such as a user ID or profile slug, to populate the identifier field.
  • A short, accurate description or professional bio for the entity to use as the description property.
  • A publicly accessible profile image URL that depicts the actual person or organization, in a file format supported by Google Images, and not blocked by your server.
  • At least one external profile URL or official homepage to include as a sameAs link, such as a LinkedIn profile, Twitter account, or organizational website.
  • The ISO 8601 timestamps for when the profile page was created and last modified, if you track that data, for the dateCreated and dateModified fields.
  • Any credential data you want to include, such as a verified status, professional licensure, or recognized credential, along with the name of the issuing organization.
  • Optional interaction statistics if your platform tracks them, such as follower counts, like counts, or post counts, to populate interactionStatistic and agentInteractionStatistic.
  • Edit access to the page HTML or to a CMS that allows you to insert a custom JSON-LD script block, or a plugin that outputs structured data correctly.
  • A Google account with access to Search Console for the property, so you can use URL Inspection and submit sitemaps after deployment.
  • Access to the Schema.org ProfilePage reference to confirm property names and expected data types as you build the markup.
  • A method to validate your completed markup, specifically Google's Rich Results Test, before you publish anything to the live page.

How to Implement Profile Page Schema for SEO: Complete Step-by-Step Process

Working through this procedure from start to finish in a single session produces the cleanest result. Each step builds directly on the previous one, so skipping ahead or jumping back to fill gaps tends to introduce errors that are harder to diagnose after deployment. Pay closest attention to the validation and accessibility steps, since markup that cannot be crawled or that contains critical errors contributes nothing to your search visibility regardless of how complete the data appears in your editor.

  1. Choose your implementation method

    Decide whether you will write the JSON-LD block by hand, use a CMS plugin, or generate it with JavaScript. JSON-LD is the recommended format because it sits in a self-contained script block and does not require you to modify visible page elements. Source If you use a CMS plugin, confirm it actually outputs a script tag in the rendered HTML by viewing your page source, not just the plugin settings screen. If you generate structured data with JavaScript, you must verify that the output is fully rendered before Google's crawler processes the page.

    How to verify: Open your page source or a rendered preview and confirm a script tag with type="application/ld+json" is present and contains readable JSON.

    Common fail: Trusting a plugin's configuration screen without checking whether the markup actually appears in the live page output.

  2. Confirm the page represents a single entity

    ProfilePage structured data is designed for pages whose primary focus is one Person or one Organization. Source Review the page content and confirm it does not aggregate multiple profiles or mix unrelated entity types. If the page covers more than one person, the markup will misrepresent the content and is likely to be ignored or flagged. Set your mainEntity type to either Person or Organization based on who the page is actually about.

    How to verify: Read the page as a visitor and confirm a single named individual or organization is clearly the subject of all content on it.

    Common fail: Applying ProfilePage markup to an author archive or team listing page that features multiple people.

  3. Collect and organize all profile data before writing markup

    Gather the entity's name, alternateName, identifier, description, image URL, and sameAs links before opening a code editor. Also collect optional data you plan to include: dateCreated, dateModified, credential details, and any interaction statistics your platform tracks such as follower counts or post counts. Keeping all values in a single reference document means you can build the JSON-LD in one pass without stopping to locate missing information. Confirm the image URL is publicly accessible and returns the actual profile image when opened in a browser.

    How to verify: Every field you intend to use has a confirmed, accurate value written down before you begin building the script block.

    Common fail: Discovering mid-build that the profile image URL is behind authentication or returns a broken link.

  4. Build the ProfilePage JSON-LD script block

    Open a script tag with type="application/ld+json" and declare your top-level object with "@context": "https://schema.org/" and "@type": "ProfilePage". Add a name field at the ProfilePage level if the page carries a handle or title, then nest your mainEntity object typed as Person or Organization. Inside mainEntity, include name, alternateName, identifier, description, image, and sameAs as a minimum. Source If you are including credential data, nest a hasCredential object inside the Person with a credentialCategory value and a recognizedBy Organization that carries its own name field.

    How to verify: Paste the raw JSON into a JSON validator to confirm there are no syntax errors before moving to the next step.

    Common fail: Forgetting to close a nested object or array, which breaks the entire script block silently.

  5. Add recommended optional properties that strengthen the markup

    Include dateCreated and dateModified in ISO 8601 format if your CMS tracks those timestamps, since they help Google understand the lifecycle of the profile. Source If your platform tracks engagement data, add interactionStatistic entries for actions like FollowAction and LikeAction, and add agentInteractionStatistic for actions the person has taken such as WriteAction. Each statistic uses an InteractionCounter object with an interactionType and a userInteractionCount. Only include statistics you actually track and can keep accurate; invented or static numbers provide no benefit and risk violating Google's structured data guidelines.

    How to verify: Each optional property you added maps to a real, current value that matches what is displayed or implied on the visible page.

    Common fail: Hardcoding follower or post counts that immediately become outdated and diverge from actual platform data.

  6. Validate the markup with the Rich Results Test

    Copy your complete JSON-LD block and paste it into Google's Rich Results Test using the code snippet option. Review the output for critical errors, which must be resolved before deployment, and for warnings, which indicate missing recommended fields. Confirm that the tool detects a ProfilePage item and that the mainEntity is correctly identified. Do not deploy to the live page until the test reports no critical errors. Also confirm the page is not blocked by robots.txt, tagged with noindex, or placed behind a login, since any of these conditions will prevent Google from processing the markup regardless of its quality.

    How to verify: The Rich Results Test shows a valid structured data item with no critical errors and correctly identifies the entity type.

    Common fail: Publishing markup that passes a syntax check but still contains critical schema errors that only the Rich Results Test would have caught.

  7. Deploy the markup to the live profile page

    Place the validated JSON-LD script block in the head section of the profile page HTML, or configure your CMS or plugin to output it there. After publishing, load the live page in a browser and use your browser's View Source function to confirm the script tag is present in the actual served HTML. Do not rely on a staging environment or a browser extension rendering the content differently from what Google's crawler will see. If you used JavaScript to generate the markup, open the page in a browser that has JavaScript disabled or use a fetch tool that returns raw HTML to confirm the script is not dependent on client-side execution alone.

    How to verify: The raw HTML source of the live page contains the complete JSON-LD script block with no truncation or encoding issues.

    Common fail: The script tag appears in the template file but is stripped or not rendered by the CMS on the actual page output.

  8. Confirm Google can access and detect the structured data

    Open Google Search Console and navigate to the URL Inspection tool. Enter the exact URL of your profile page and run an inspection. Review the result to confirm the page is indexed or indexable, that no crawl blocks are present, and that the structured data section shows your ProfilePage item. If the tool shows a cached version that predates your deployment, use the live test option within URL Inspection to force a fresh fetch of the current page. Address any accessibility issues the tool surfaces before requesting a recrawl.

    How to verify: URL Inspection reports the page as accessible to Google and lists a ProfilePage structured data item in its detected data section.

    Common fail: The tool shows a robots.txt block or noindex directive that was overlooked during validation, preventing any crawling of the markup.

  9. Request a recrawl and update your sitemap

    From within the URL Inspection tool in Search Console, use the Request Indexing button to ask Google to recrawl the updated page promptly. Source This does not guarantee immediate processing but signals that the page has changed and should be re-evaluated. Separately, confirm that the profile page URL is included in your submitted XML sitemap. If you manage a large number of profile pages, consider automating sitemap updates using the Search Console Sitemap API to keep Google informed whenever profiles are created or substantially changed.

    How to verify: Search Console confirms the recrawl request was submitted, and the sitemap report shows the profile page URL as submitted and without errors.

    Common fail: Deploying markup and assuming Google will discover the update organically without requesting a recrawl or updating the sitemap.

  10. Monitor performance and maintain data accuracy over time

    Check the Enhancements and Rich Results sections in Search Console regularly to identify any newly flagged errors or warnings on your profile pages. When profile data changes, such as a new credential, updated image, changed employer, or revised social links, update the JSON-LD to match and rerun the Rich Results Test before redeploying. Update dateModified to reflect the current date whenever the markup or the visible profile content changes. Stale or contradictory data between the markup and the visible page is one of the most common reasons structured data stops contributing to search performance over time.

    How to verify: Search Console shows no active structured data errors for your profile pages, and the values in the deployed markup match what a visitor sees on the live page.

    Common fail: Treating the markup as a one-time task and allowing the structured data to fall out of sync with the actual profile content as the entity's information changes.

profile page schema for seo

How to Confirm Your Profile Page Schema Is Working Correctly

Validation before deployment catches syntax errors, but post-deployment verification is what confirms Google can actually find, crawl, and interpret your markup on the live page. Use the two-tool workflow described below: the Rich Results Test handles markup quality, and the URL Inspection tool in Search Console handles accessibility and detection. Run both checks after every deployment and after any substantive update to the profile data, not just the first time you publish the structured data.

  • The Rich Results Test returns no critical errors and successfully detects a ProfilePage structured data item in your markup. Source
  • The mainEntity field is present in the detected item and is correctly typed as either Person or Organization.
  • Required properties including name, identifier, description, image, and sameAs are all populated and shown in the Rich Results Test output without warnings flagging them as missing.
  • The profile image URL resolves correctly in a browser, returns the actual entity image, and is not blocked by your server or a login requirement.
  • The URL Inspection tool in Search Console reports the page as indexable, shows no robots.txt block, and confirms no noindex directive is present.
  • URL Inspection detects the ProfilePage structured data item under the page's structured data section when a live test is run against the deployed page.
  • The raw HTML source of the live page contains the complete JSON-LD script block with no truncation, encoding corruption, or missing closing tags.
  • The values in the deployed JSON-LD match what a visitor actually sees on the visible profile page, with no contradictions between markup data and on-page content.
  • Search Console's Enhancements or Rich Results report shows no active errors or warnings for the profile page URL after Google has had time to process the recrawl request.
  • If optional properties such as dateCreated, dateModified, or interactionStatistic were included, those fields appear in the Rich Results Test output without type errors.
Checkpoint What good looks like How to test If it fails, try
Markup validity Rich Results Test detects a ProfilePage item with no critical errors Paste the JSON-LD into the Rich Results Test code snippet option Fix any critical errors flagged by the tool, then retest before redeploying
mainEntity presence The detected item shows mainEntity typed as Person or Organization Review the structured data breakdown in the Rich Results Test output Add or correct the mainEntity block in your JSON-LD and revalidate
Live page script presence The JSON-LD script block appears in the raw HTML source of the live URL Open the live page URL and use browser View Source to search for "application/ld+json" Check CMS output settings or plugin configuration; confirm the template is rendering the block
Page accessibility to Google URL Inspection reports the page as indexable with no crawl blocks Run the live URL through URL Inspection in Google Search Console Remove any robots.txt disallow rules, noindex tags, or login requirements blocking the page
Structured data detection by Google URL Inspection lists a ProfilePage item in the detected structured data section Use the live test option in URL Inspection to fetch the current page state Confirm the script is not reliant on JavaScript that Google cannot fully render; consider a static fallback
Profile image crawlability Image URL opens correctly in a browser without redirects or authentication prompts Paste the image URL directly into a browser and confirm it loads the entity image Move the image to a publicly accessible path and update the URL in the markup
Search Console error status No active errors or warnings appear for the profile page in the Rich Results or Enhancements report Check the relevant report in Search Console after Google has processed the recrawl request Open each flagged issue, follow the recommended fix, update the markup, and resubmit for validation
Data consistency Markup values for name, image, and sameAs match what is visible on the live page Compare the deployed JSON-LD values side by side with the visible profile page content Update whichever version is out of date so the markup and visible content are aligned

Troubleshooting Profile Page Schema Problems

Most ProfilePage structured data issues fall into one of three categories: markup that is technically invalid, markup that is valid but inaccessible to Google, or markup that is accessible but inconsistent with the visible page content. The entries below address the specific symptoms you are most likely to encounter at each stage, from initial validation through post-deployment monitoring in Search Console.

  • Symptom: The Rich Results Test reports a critical error stating that mainEntity is missing or not recognized.

    Why it happens: The mainEntity property was omitted entirely, was misspelled, or was placed outside the ProfilePage object rather than nested inside it. mainEntity is the only required property for ProfilePage, so its absence renders the entire markup invalid. Source

    Fix: Open your JSON-LD, locate the top-level ProfilePage object, and add a correctly nested mainEntity block typed as either Person or Organization. Confirm the property name is spelled exactly as mainEntity with a capital E, then rerun the Rich Results Test before redeploying.

  • Symptom: The Rich Results Test detects the markup but flags multiple recommended properties as missing.

    Why it happens: The markup was built with only the minimum required field and skipped recommended properties such as name, identifier, description, image, and sameAs on the Person or Organization object. These are not enforced as errors but their absence weakens the markup's usefulness to Google.

    Fix: Return to your data collection document and confirm you have values for name, alternateName, identifier, description, a crawlable image URL, and at least one sameAs URL. Add each available property to the mainEntity object, revalidate, and redeploy.

  • Symptom: The image field produces a warning or error indicating the image is not crawlable or is in an unsupported format.

    Why it happens: The image URL either requires authentication to access, returns a redirect loop, points to a file format Google Images does not support, or resolves to a generic placeholder rather than an actual image of the entity.

    Fix: Open the image URL directly in a browser without being logged in to your site. If it fails to load or redirects to a login screen, move the image to a publicly accessible path on your server. Confirm the file is in a standard format such as JPEG, PNG, or WebP, then update the URL in your markup and revalidate.

  • Symptom: URL Inspection shows the page as not indexable due to a robots.txt disallow rule or a noindex directive.

    Why it happens: Profile pages are sometimes inadvertently blocked during development and the block is never removed before the page goes live, or a CMS setting applies a noindex tag to a content type that includes profile pages.

    Fix: Check your robots.txt file for any rules that match the profile page URL pattern and remove the relevant disallow line. Then inspect the page source for a meta robots tag containing noindex and remove it or change the CMS setting that generates it. Rerun URL Inspection after making the change to confirm the block is lifted.

  • Symptom: URL Inspection shows the page as accessible but does not list any structured data in the detected items section.

    Why it happens: The JSON-LD script block is present in the template file but is not actually rendered in the final HTML output served to Google, which commonly occurs when a CMS caches an older version of the page or when JavaScript generates the markup but the crawler receives the pre-render HTML.

    Fix: Use the View Source function on the live URL, not the browser's inspector, to check whether the script tag appears in the raw HTML. If it is absent, clear your CMS cache and reload. If the markup is JavaScript-generated, either move it to a server-rendered template or confirm that Googlebot can fully execute the JavaScript by checking the rendered HTML in URL Inspection's live test.

  • Symptom: The markup was valid at deployment but Search Console now shows new errors or warnings several weeks later.

    Why it happens: Profile data changed after deployment, such as a new job title, updated image, or removed social profile, but the JSON-LD was not updated to match, creating a conflict between the markup and the visible page content or causing a previously valid URL to break.

    Fix: Open the structured data error in Search Console to identify exactly which property is flagged. Update the JSON-LD to reflect current, accurate values, rerun the Rich Results Test to confirm the fix, redeploy, and submit a new recrawl request through URL Inspection.

  • Symptom: A CMS plugin is installed and configured but the profile page markup is absent or malformed in the page source.

    Why it happens: Many structured data plugins have per-post-type or per-template settings that must be explicitly enabled for profile page content types. If the plugin is configured for posts and pages but not for a custom profile content type, it outputs nothing for those URLs.

    Fix: Open the plugin's settings and locate the content type or template mapping section. Enable structured data output for the profile page content type, save the settings, clear any page cache, then verify the output by checking the live page source for the JSON-LD script block.

  • Symptom: The sameAs field contains URLs that Google does not associate with the profiled entity, causing the markup to have no effect on Knowledge Graph signals.

    Why it happens: The sameAs URLs were copied incorrectly, point to a different person with a similar name, or link to pages that have since been deleted or redirected to unrelated content.

    Fix: Open each sameAs URL in a browser and confirm it resolves to a live profile page that clearly names and represents the same entity described in the markup. Remove any broken, redirected, or mismatched URLs and replace them with current, verified profile links before redeploying.

  • Symptom: The hasCredential block is present but the Rich Results Test flags an error on credentialCategory or recognizedBy.

    Why it happens: The Credential object is missing its credentialCategory value, the recognizedBy property is absent, or the Organization nested inside recognizedBy lacks a name field, any of which causes the credential block to fail validation. Source

    Fix: Locate the hasCredential block inside your Person object and confirm it contains "@type": "Credential", a credentialCategory value, and a recognizedBy object typed as Organization with a name property. Add any missing fields, revalidate with the Rich Results Test, and redeploy.

  • Symptom: The page carries a canonical tag pointing to a different URL, and structured data on the page is not being processed by Google.

    Why it happens: When a page has a canonical tag pointing to another URL, Google consolidates signals to the canonical version. If the canonical URL does not carry the same structured data, the markup on the non-canonical version is effectively invisible.

    Fix: Check the page's canonical tag and confirm it points to the correct profile page URL, not to a paginated version, a filtered URL, or an unrelated page. If the canonical is incorrect, update it to self-reference the profile page URL, then revalidate and request a recrawl.

Questions People Ask Next About Profile Page Schema

  • Does ProfilePage schema guarantee a Knowledge Panel in Google Search? No, structured data signals eligibility and provides identity context, but Google makes the final decision on whether to display a Knowledge Panel or any other rich result feature. Implementing the markup correctly improves your chances but does not guarantee a specific outcome.
  • Can I add ProfilePage schema to every author page on my site at once? Yes, if your CMS uses a shared template for author pages you can add the JSON-LD block to that template and populate it dynamically with each author's data. Make sure each instance outputs the correct values for that specific person rather than repeating the same static data across all profiles.
  • What is the difference between sameAs and url in the Person object? The url property points to the canonical page on your own site that represents the entity, while sameAs links to external profiles and pages on other platforms that describe the same person or organization. Both can be present in the same markup.
  • Should I use Person or Organization as the mainEntity type for a company profile page? Use Organization when the page represents a company, brand, or institution as the primary subject. Use Person only when the page is specifically about a named individual. Mixing the two types in a single mainEntity block is not supported.
  • How do interaction statistics like follower counts work in ProfilePage markup? You add an interactionStatistic property to the Person object using an InteractionCounter with an interactionType such as FollowAction and a userInteractionCount reflecting the current number. These values should come from live data your platform tracks, since static hardcoded numbers quickly become inaccurate. Source
  • Is there a minimum number of properties required for ProfilePage schema to be valid? The only formally required property is mainEntity, but a markup block with nothing beyond that will be technically valid yet practically useless. Including name, identifier, description, image, and sameAs on the nested Person or Organization object is the realistic minimum for the markup to contribute meaningful identity signals.
  • Can ProfilePage schema help with E-E-A-T signals for content-heavy sites? It supports E-E-A-T indirectly by giving Google structured, verifiable information about the person or organization behind content, including credentials, affiliations, and external profile links. This is particularly relevant for healthcare, finance, and legal sites where author identity directly affects how content quality is evaluated.
  • How do I connect an article page to a ProfilePage using structured data? On the article page, add an Article or BlogPosting schema block and set the author property to reference the same Person entity described on the profile page, ideally using a matching name and the profile page URL as the author's url value. This cross-page linkage helps Google associate published content with the profiled individual.
  • What happens if my profile page changes but I forget to update the schema markup? The markup becomes inconsistent with the visible page content, which can cause Search Console to flag errors and may reduce the reliability of the identity signals Google derives from the page. Always update dateModified and any changed property values whenever the profile content changes, then revalidate and request a recrawl.

Frequently Asked Questions About Profile Page Schema for SEO

What is the difference between ProfilePage schema and Person schema?

ProfilePage is a WebPage subtype that describes the page itself, while Person is the entity type that describes the individual the page is about. In a correctly structured markup, ProfilePage acts as the container and Person sits inside it as the mainEntity value. You need both working together: ProfilePage without a Person mainEntity is invalid, and a standalone Person block without a ProfilePage wrapper does not fully describe the page context.

Is ProfilePage schema required to appear in Google rich results?

ProfilePage schema is not a hard requirement for a page to appear in search results, but it is necessary for Google to reliably understand and surface structured identity information about the profiled entity. Without it, Google may still index the page, but it loses the explicit signals that connect the page to a Knowledge Graph entity, verified credentials, and external profile links that contribute to richer search features.

Can I use ProfilePage schema for an organization page as well as a person page?

Yes, the mainEntity of a ProfilePage can be typed as either Person or Organization depending on who the page represents. If your page is the primary profile for a company, brand, or institution, set mainEntity to an Organization object and populate it with the organization's name, description, image, and sameAs links. The same validation and deployment process applies regardless of which entity type you use. Source

How do I add verified credential information to a ProfilePage markup?

Inside the Person object within mainEntity, add a hasCredential property containing a Credential object. That object should include a credentialCategory field set to a value such as "verified" and a recognizedBy field pointing to an Organization object that carries the issuing body's name. This nested structure tells Google that the profiled individual holds a credential acknowledged by a named external organization, which is particularly valuable for professional and healthcare profiles.

Does adding ProfilePage schema directly improve search rankings?

Structured data does not directly alter ranking positions, but it provides Google with clearer identity signals that can indirectly improve search performance. By connecting a profile page to a Knowledge Graph entity, credible external profiles via sameAs, and verifiable credentials, you strengthen the E-E-A-T signals associated with the person or organization. This can influence how Google evaluates the authority of content attributed to that entity across your entire site.

How often should I update ProfilePage structured data after the initial deployment?

Update the markup whenever the underlying profile data changes, including a new employer, updated credentials, a changed profile image, added or removed social profiles, or a revised biography. Each time you update, change the dateModified value to the current date, rerun the Rich Results Test to confirm validity, redeploy the updated markup, and submit a recrawl request through URL Inspection in Search Console so Google processes the changes promptly.

Can I implement ProfilePage schema using Microdata instead of JSON-LD?

Microdata is a supported format for structured data and can technically be used for ProfilePage markup, but JSON-LD is the recommended approach because it sits in a self-contained script block that does not require modifying visible HTML elements. JSON-LD is also easier to validate, update, and manage over time, especially when profile data changes frequently or when the markup is generated dynamically by a CMS template or plugin.

What should I put in the sameAs field for a ProfilePage?

The sameAs field should contain URLs of external pages that represent the same person or organization described in the markup, such as their LinkedIn profile, Twitter or X account, official organizational website, Wikipedia page, or other authoritative public profiles. Each URL you include should resolve to a live page that clearly and unambiguously identifies the same entity. Remove any URLs that are broken, redirected to unrelated content, or belong to a different person with a similar name.

Will ProfilePage schema help with author visibility in Google Top Stories or Discover?

Properly implemented ProfilePage markup contributes to the identity signals Google uses when evaluating content for features like Top Stories and Discover, where author names and affiliations increasingly appear alongside article headlines. Linking article structured data to a well-formed author ProfilePage strengthens the connection between published content and a verifiable identity, which aligns with the authorship and expertise signals Google has been expanding in its search features since late 2023.

Share this article