Is there a way to precise average price of house or apartment by city using schema.org? - schema.org

I am trying to set up a schema.org in order to indicate Google the average price of real estate in a specific area.
I have thousands of urls. Each one is dealing with real estate prices in a specific city.
I have already set up a schema.org for dataset.
{
"#context": "https://schema.org/",
"#type": "Dataset",
"name": "L'Apporteur d'Immo | Tous les prix de l'immobilier pour Paris 8e Arrondissement",
"description": "Ensemble de statistiques immobilières fournies par l'Apporteur d'Immo, spécialiste des prix immobiliers partout en France Métropolitaine et des estimations immobilières en ligne. Découvrez les prix immobiliers par quartier, commune, rue ...",
"url": "https://www.lapporteurdimmo.com/prix-immobilier/commune-75008-75108-Paris-8eme-arrondissement",
"isBasedOn": {
"#type": "CreativeWork",
"schema:name": "Carte des prix immobiliers",
"schema:publisher": "L'Apporteur d'Immo | Spécialiste des prix immobiliers et estimation en ligne",
"schema:url": "https://www.lapporteurdimmo.com/"
},
"license" : "https://www.lapporteurdimmo.com/",
"mainEntityOfPage": {
"#type": "WebPage",
"lastReviewed": "20210404"
},
"keywords": [
"prix immobilier paris 8",
"prix m2 paris 8",
"Immobilier Paris 8",
"Immobilier 75008"
],
"creator": {
"#type": "Organization",
"url": "https://www.lapporteurdimmo.com",
"name": "L'Apporteur d'Immo | Spécialiste des prix immobiliers et estimation en ligne",
"contactPoint": {
"#type": "ContactPoint",
"contactType": "customer service",
"email": "contact#lapporteurdimmo.com",
"url": "https://www.lapporteurdimmo.com"
}
},
"includedInDataCatalog": {
"#type": "DataCatalog",
"name": "L'Apporteur d'Immo | Spécialiste des prix immobiliers et estimation en ligne",
"url": "https://www.lapporteurdimmo.com"
},
"distribution": [
{
"#type": "DataDownload",
"encodingFormat": "text/html",
"contentUrl": "https://www.lapporteurdimmo.com/prix-immobilier/commune-75008-75108-Paris-8eme-arrondissement"
}
],
"temporalCoverage": "2014-01-01/2021-04-04",
"spatialCoverage": {
"#type": "Place",
"name": "Paris 8e Arrondissement",
"geo": {
"#type": "GeoCoordinates",
"latitude": 48.8719638,
"longitude": 2.3115598
},
"address": {
"#type": "PostalAddress",
"addressCountry": "FR",
"addressLocality": "Paris 8e Arrondissement",
"addressRegion": "Paris",
"postalCode": "75008"
}
},
"variableMeasured": [
{
"#type": "PropertyValue",
"name": "Prix immobilier maison",
"value": 10233,
"unitText": "€"
},
{
"#type": "PropertyValue",
"name": "Maison- Evolution prix immobilier sur 1 an",
"value": 0,
"unitCode": "P1"
},
{
"#type": "PropertyValue",
"name": "Prix immobilier appartement",
"value": 12390,
"unitText": "€"
},
{
"#type": "PropertyValue",
"name": "Appartement - Evolution prix immobilier sur 1 an",
"value": 13,
"unitCode": "P1"
}
]
}
Now I would like to do the same regarding the GOOGLE SEARCH. The schema would help Google to understand that the url is dealing with information about an area, then to understand that it is about real estate, than to indicate that is regarding house, then the average price is ...
Many thanks in advance for your help.

Related

Local Business Structured Data doesn't shows in Search console

Hey 👋 I need some help please
I have structured data (JSON-LD) on a website for a Local Business
<script type="application/ld+json">
{
"#context": "https://schema.org",
"#type": "Restaurant",
"name": "Pizza cafe",
"address": {
"#type": "PostalAddress",
"streetAddress": "some street address",
"addressLocality": "city name"
},
"telephone": "+421234567890",
"servesCuisine": "Pizza",
"geo": {
"#type": "GeoCoordinates",
"latitude": 48.172356,
"longitude": 17.238084
},
"openingHours": [
"Mo 11:00–20:30",
"Tu 11:00–20:30",
"We 11:00–20:30",
"Th 11:00–20:30",
"Fr 11:00–20:30",
"Sa 11:00–20:30"
],
"image": [
"https://image.com/photo.jpeg"
],
"aggregateRating": {
"#type": "AggregateRating",
"ratingValue": "4.4",
"ratingCount": 200,
"bestRating": 5,
"worstRating": 1
},
"priceRange": "€€"
}
</script>
and Rich Results Test parse it correctly
But in Search console I can see only Review snippet, and I can't understand why I can't see local business data
What could be the reason?

Resume (work history and organization) format with JSON-LD and Schema.org vocab

Let's say you have a profile page that features a mainEntity that's a Person. And you'd like to list that person's work and education history, similar to a resume.
Schema.org's Occupation example 4, illustrates how to use Role and hasOccupation to associate an array of work history, like so:
{
"#context": "http://schema.org",
"#type": "Person",
"name": "Jane Smith",
"sameAs": "http://en.wikipedia.org/wiki/Jane_Smith",
"worksFor": {
"#type": "Organization",
"name": "McKinsey & Company",
"url" : "http://www.mckinsey.com"
},
"hasOccupation": [ {
"#type": "Role",
"hasOccupation": {
"#type": "Occupation",
"name": "Management Consultant"
},
"startDate": "2016-04-21"
}, {
"#type": "Role",
"hasOccupation": {
"#type": "Occupation",
"name": "Chief Strategic Officer"
},
"startDate": "2013-11-14",
"endDate": "2016-03-22"
}, {
"#type": "Role",
"hasOccupation": {
"#type": "Occupation",
"name": "Vice President of Sales"
},
"startDate": "2009-09-20",
"endDate": "2013-10-14"
}
]
}
Only the occupation name is included. Not the Organization associated with that Occupation.
Is it possible to detail a resume more extensively this way with the Schema.org vocab? (Similar to Microformats hresume)
Side note: Education history isn't as difficult, because you can include an Organization object
"alumniOf": [ {
"#type": "OrganizationRole",
"alumniOf": {
"#type": "CollegeOrUniversity",
"name": "City University of New York",
"sameAs": "https://en.wikipedia.org/wiki/City_University_of_New_York"
},
"startDate": "1990",
"endDate": "1992",
"roleName": "MBA"
}, {
"#type": "OrganizationRole",
"alumniOf": {
"#type": "CollegeOrUniversity",
"name": "University of California, Berkeley",
"sameAs": "https://en.wikipedia.org/wiki/University_of_California,_Berkeley"
},
"startDate": "1983",
"endDate": "1987",
"roleName": "BSc Psychology"
}
]
Ok, I know this hasn't been responded to in a while, but I have been looking at this question a lot because I'm trying to 'JSONize' my resume data :)
Here is the approach that I took for work history. I made my person and all of its attributes, then I have an occupation (my current occupation) and then I have previous occupations (past-selves, if you will). So having said that much, I can tell you that I put my work history in my alumniOf property.
According to schema.org, the alumniOf property is used to illustrate a person-organization relationship that has ended; I don't work at those places anymore.
Then when I 'instantiate' the organization objects, they can have an employee. That employee is 'my past self', who then has an occupation at that time working at xyz corp. That 'past-person' is the same person as my present person, which I then link using a format similar example 5 from https://schema.org/Book.
Take a look at my code below to get some clarification.
I hope this helps - if nothing else someone else can come along and tweak my response so that we could have something that will work for people when they google it.
{
"#context": "http://schema.org",
"#type": "Person",
"#id": "#john",
"name": "John Smith",
"address": {
"#type": "PostalAddress",
"addressCountry": "US",
"addressLocality": "Austin",
"addressRegion": "Florida",
"postalCode": "12345",
"streetAddress": "123 breeze way"
},
"email": "john#example.org",
"telephone": "1234567890",
"image": "",
"jobTitle": "Software Developer",
"description": "Blip about me...",
"contactPoint": [{
"#type": "ContactPoint",
"contactType": "LinkedIn",
"identifier": "johnsmith",
"image": "imageurl",
"url": "profileurl"
},
{
"#type": "ContactPoint",
"contactType": "GitHub",
"identifier": "johnsmith",
"image": "imageurl",
"url": "profileurl"
}
],
"url": "example.org",
"hasCredential": [{
"#type": "EducationalOccupationalCredential",
"aggregateRating": {
"#type": "aggregateRating",
"ratingValue": "3.51",
"name": "GPA"
},
"credentialCategory": "degree",
"educationalLevel": "Bachelors of Science",
"dateCreated": "2015-05",
"about": {
"#type": "EducationalOccupationalProgram",
"name": "Computer Engineering"
},
"recognizedBy": {
"#type": "CollegeOrUniversity",
"name": "Some Awesome University",
"sameAs": "urlgoeshere"
}
}],
"hasOccupation": {
"#type": "EmployeeRole",
"roleName": "role title goes here",
"startDate": "2015-06"
},
"worksFor": {
"#type": "Organization",
"name": "big company",
"sameAs": "urlgoeshere"
},
"award": [
"Organizational Achievement Awards Q3'17, Q2'19, Q3'19",
"Divisional Recognition Award Q1'19",
"Dean's List: Spring '12,'14; Fall '13",
"President's List: Spring '13; Fall '14",
"Eagle Scout Leadership Service Award 2011"
],
"alumniOf": [{
"#type": "Organization",
"name": "old workplace",
"sameAs": "urlgoeshere",
"employee": {
"#type": "Person",
"hasOccupation": {
"#type": "EmployeeRole",
"roleName": "Computer Consultant",
"startDate": "2012-08",
"endDate": "2015-05"
},
"sameAs": "#john"
}
},
{
"#type": "Organization",
"name": "another company",
"sameAs": "urlgoeshere",
"employee": {
"#type": "Person",
"hasOccupation": {
"#type": "EmployeeRole",
"roleName": "internship",
"startDate": "2014-05",
"endDate": "2014-08"
},
"sameAs": "#john"
}
}
]
}
The below for is for the exact same goal. Here you can find a standard for creating resume with json-ld standards. You can use the lab-web to create a sample resume, get output and then compare the jsonld fields.
Here is the link to github
https://github.com/Jsonldresume/
Lab-web is for creating the resume and you can export it in jsonld format. You can run the app demo to see it in action.
Skill is the schema and context definition for a resume
Resume repository is for sharing your resume with others.

What's the best schema.org type to use to describe weekly yoga classes?

The page https://www.hello-yoga.co.uk describes two yoga classes, that run every week.
Is an Event with a potentialAction of type ExerciseAction the best way to represent the classes?
Note these are classes that take place in various locations (e.g. church halls) so HealthClub didn't seem an appropriate type.
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "Event",
"name": "hello YOGA",
"startDate": "2018-06-13T19:45",
"endDate": "2018-06-13T20:45",
"description":
"Yoga class at Friends Meeting House (Harrogate) every Thursday.",
"image": "https://www.hello-yoga.co.uk/yoga-people.svg",
"location": {
"#type": "Place",
"name": "Friends Meeting House",
"address": {
"#type": "PostalAddress",
"streetAddress": "12A Queens Parade",
"addressLocality": "Harrogate",
"addressRegion": "North Yorkshire",
"postalCode": "HG1 5PP",
"addressCountry": "GB"
}
},
"offers": {
"#type": "Offer",
"availability": "http://schema.org/LimitedAvailability",
"price": "7.00",
"priceCurrency": "GBP",
"validFrom": "2018-05-01T12:00",
"url": "https://www.hello-yoga.co.uk"
},
"potentialAction": {
"#type": "ExerciseAction",
"name": "hello YOGA",
"description": "Small, friendly yoga class. Suitable for all abilities.",
"exerciseType": "Yoga",
"startTime": "2018-06-13T19:45",
"endTime": "2018-06-13T20:45",
"location": {
"name": "Friends Meeting House",
"#type": "PostalAddress",
"streetAddress": "12A Queens Parade",
"addressLocality": "Harrogate",
"addressRegion": "North Yorkshire",
"postalCode": "HG1 5PP",
"addressCountry": "GB"
}
},
"performer": {
"#type": "LocalBusiness",
"description":
"Small, friendly yoga classes. Suitable for all abilities. Strengthen body, increase flexibility and calm the mind.",
"name": "hello YOGA",
"email": "clare#hello-yoga.co.uk",
"url": "https://www.hello-yoga.co.uk",
"priceRange": "£7",
"image": "https://www.hello-yoga.co.uk/yoga-people.svg",
"address": {
"#type": "PostalAddress",
"addressLocality": "Harrogate",
"addressRegion": "North Yorkshire",
"addressCountry": "GB"
}
}
}
</script>
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "Event",
"name": "hello YOGA",
"startDate": "2018-06-07T19:00",
"endDate": "2018-06-07T20:00",
"description":
"Yoga class at Beckwith Health Club (Harrogate) every Wednesday.",
"image": "https://www.hello-yoga.co.uk/yoga-people.svg",
"location": {
"#type": "Place",
"name": "Beckwith Health Club",
"address": {
"#type": "PostalAddress",
"streetAddress": "Beckwith Health Club",
"addressLocality": "Harrogate",
"addressRegion": "North Yorkshire",
"postalCode": "HG3 1UF",
"addressCountry": "GB"
}
},
"offers": {
"#type": "Offer",
"availability": "http://schema.org/LimitedAvailability",
"price": "7.00",
"priceCurrency": "GBP",
"validFrom": "2018-05-01T12:00",
"url": "https://www.hello-yoga.co.uk"
},
"potentialAction": {
"#type": "ExerciseAction",
"name": "hello YOGA",
"description": "Small, friendly yoga class. Suitable for all abilities.",
"exerciseType": "Yoga",
"startTime": "2018-06-07T19:00",
"endTime": "2018-06-07T20:00",
"location": {
"name": "Beckwith Health Club",
"#type": "PostalAddress",
"streetAddress": "Beckwith Health Club",
"addressLocality": "Harrogate",
"addressRegion": "North Yorkshire",
"postalCode": "HG3 1UF",
"addressCountry": "GB"
}
},
"performer": {
"#type": "LocalBusiness",
"description":
"Small, friendly yoga classes. Suitable for all abilities. Strengthen body, increase flexibility and calm the mind.",
"name": "hello YOGA",
"email": "clare#hello-yoga.co.uk",
"url": "https://www.hello-yoga.co.uk",
"priceRange": "£7",
"image": "https://www.hello-yoga.co.uk/yoga-people.svg",
"address": {
"#type": "PostalAddress",
"addressLocality": "Harrogate",
"addressRegion": "North Yorkshire",
"addressCountry": "GB"
}
}
}
</script>

Schema.org for Category page

Backstory: I'm working on e-commerce shop, we have category page displaying thumbnails of products, along with their prices, names, and short description. Can't buy from this page, need to enter product details page first.
I'm really confused about the usage of schema.org on category pages.
Came up with couple of solutions but can't tell which one's best (prefer the last one tbh)
ItemList with ListItems inside as recommended on https://developers.google.com/search/docs/guides/mark-up-listings
(Products are not supported, but it shows the idea behind placing several items on the site)
{
"#context": "http://schema.org",
"#type": "ItemList",
"name": "T-Shirt",
"url": "/category/t-shirt/",
"description": "Deserunt quibusdam ipsa illo ex nam ea illo qui. Itaque maiores doloribus accusamus ratione. Aperiam ipsa veritatis quas nisi.",
"itemListOrder": "Unordered",
"numberOfItems": 2,
"itemListElement": [
{
"#type": "ListItem",
"position": 1,
"url": "/products/lopez-smith-25/?color=yellow&size=XXL",
"name": "Yellow Lopez-Smith",
"image": {
"#context": "http://schema.org",
"#type": "ImageObject",
"contentUrl": "/media/__sized__/products/yellow_n2QjKzn-thumbnail-640x640-70.jpg",
"description": "Lopez-Smith",
"width": 640,
"height": 640
}
},
{
"#type": "ListItem",
"position": 2,
"url": "/products/lopez-smith-25/?color=blue&size=37",
"name": "Blue Lopez-Smith",
"image": {
"#context": "http://schema.org",
"#type": "ImageObject",
"contentUrl": "/media/__sized__/products/blue_FZ3yJjG-thumbnail-640x640-70.jpg",
"description": "Lopez-Smith",
"width": 640,
"height": 640
}
}
]
}
Several Products as recommended on https://developers.google.com/search/docs/guides/sd-policies
Joined together using #graph
A category page listing several different products (or recipes, videos, or any other type). Each entity should be marked up using the relevant schema.org type, such as schema.org/Product for product category pages. However, if one item is marked, all items should be marked. Also, unless this is a carousel page, the marked items should not link out to separate details pages.
{
"#context": "http://schema.org",
"#graph": [
{
"#type": "Product",
"#id": "/category/t-shirt/p-1",
"description": "Nobis vel fugiat e",
"name": "Yellow Lopez-Smith",
"offers": {
"#type": "Offer",
"availability": "http://schema.org/InStock",
"price": "18.28",
"priceCurrency": "GBP",
"itemCondition": "http://schema.org/NewCondition",
"description": "Nobis vel fugiat e",
"name": "Yellow Lopez-Smith",
"gtin13": "68614",
"category": "T-Shirt",
"image": {
"#context": "http://schema.org",
"#type": "ImageObject",
"contentUrl": "/media/__sized__/products/yellow_n2QjKzn-thumbnail-640x640-70.jpg",
"description": "Lopez-Smith",
"width": 640,
"height": 640
}
}
},
{
"#type": "Product",
"#id": "/category/t-shirt/p-2",
"description": "Nobis vel fugiat e",
"name": "Blue Lopez-Smith",
"offers": {
"#type": "Offer",
"availability": "http://schema.org/InStock",
"price": "22.64",
"priceCurrency": "GBP",
"itemCondition": "http://schema.org/NewCondition",
"description": "Nobis vel fugiat e",
"name": "Blue Lopez-Smith",
"gtin13": "73963",
"category": "T-Shirt",
"image": {
"#context": "http://schema.org",
"#type": "ImageObject",
"contentUrl": "/media/__sized__/products/blue_FZ3yJjG-thumbnail-640x640-70.jpg",
"description": "Lopez-Smith",
"width": 640,
"height": 640
}
}
}
]
}
Different Products listed as ItemOffered inside of Offer (based on Ebay)
{
"#context": "http://schema.org",
"#type": "WebPageElement",
"offers": {
"#type": "Offer",
"itemOffered": [
{
"#type": "Product",
"#id": "/category/t-shirt/p-1",
"description": "Nobis vel fugiat e",
"name": "Yellow Lopez-Smith",
"offers": {
"#type": "Offer",
"availability": "http://schema.org/InStock",
"price": "18.28",
"priceCurrency": "GBP",
"itemCondition": "http://schema.org/NewCondition",
"description": "Nobis vel fugiat e",
"name": "Yellow Lopez-Smith",
"gtin13": "68614",
"category": "T-Shirt",
"image": {
"#context": "http://schema.org",
"#type": "ImageObject",
"contentUrl": "/media/__sized__/products/yellow_n2QjKzn-thumbnail-640x640-70.jpg",
"description": "Lopez-Smith",
"width": 640,
"height": 640
}
}
},
{
"#type": "Product",
"#id": "/category/t-shirt/p-2",
"description": "Nobis vel fugiat e",
"name": "Blue Lopez-Smith",
"offers": {
"#type": "Offer",
"availability": "http://schema.org/InStock",
"price": "22.64",
"priceCurrency": "GBP",
"itemCondition": "http://schema.org/NewCondition",
"description": "Nobis vel fugiat e",
"name": "Blue Lopez-Smith",
"gtin13": "73963",
"category": "T-Shirt",
"image": {
"#context": "http://schema.org",
"#type": "ImageObject",
"contentUrl": "/media/__sized__/products/blue_FZ3yJjG-thumbnail-640x640-70.jpg",
"description": "Lopez-Smith",
"width": 640,
"height": 640
}
}
}
]
}
}
Any help would be appreciated

Error in Google SDTT: "Duplicate values for url are not allowed."

Google Structured Data Testing Tool returns for the following JSON-LD:
Duplicate values for url are not allowed.
Why? I do not understand.
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "ItemList",
"itemListElement": [{
"#type": "ListItem",
"position": 0,
"item": {
"#type": "Article",
"headline": "Bonito de norte",
"alternativeHeadline": "Thunnus alalunga.",
"image": {
"#type": "ImageObject",
"url": "http://dechado09.softgalia.com/producto/imagenes/facebook/2/BONITO.jpg?1502195043",
"width": "1200",
"height": "830"
},
"author": "SoftGalia Aplicaciones Informáticas S.L.",
"editor": "Pescados Trocheros",
"keywords": "Venta pescado, Mayorista de Pescado",
"publisher": {
"#type": "Organization",
"name": "Academia Lucense de Balonmano",
"logo": {
"#type": "ImageObject",
"url": "http://dechado09.softgalia.com/logo/facebook/1/logo-trochero-01.jpg?1504175529",
"width": "1200",
"height": "830"
}
},
"url": "http://dechado09.softgalia.com/productos/index",
"datePublished": "2017-08-08 12:24:11 UTC",
"dateCreated": "2017-08-08 12:24:11 UTC",
"dateModified": "2017-08-22 07:43:53 UTC",
"description": "Thunnus alalunga.",
"articleBody": "Thunnus alalunga.",
"mainEntityOfPage": "http://dechado09.softgalia.com/productos/index"
}
},
{
"#type": "ListItem",
"position": 1,
"item": {
"#type": "Article",
"headline": "Merluza",
"alternativeHeadline": "Merluccius merluccius",
"image": {
"#type": "ImageObject",
"url": "http://dechado09.softgalia.com/producto/imagenes/facebook/4/merluza-primer-plano.jpeg?1504525751",
"width": "1200",
"height": "830"
},
"author": "SoftGalia Aplicaciones Informáticas S.L.",
"editor": "Pescados Trocheros",
"keywords": "Venta pescado, Mayorista de Pescado",
"publisher": {
"#type": "Organization",
"name": "Academia Lucense de Balonmano",
"logo": {
"#type": "ImageObject",
"url": "http://dechado09.softgalia.com/logo/facebook/1/logo-trochero-01.jpg?1504175529",
"width": "1200",
"height": "830"
}
},
"url": "http://dechado09.softgalia.com/productos/index",
"datePublished": "2017-09-04 11:49:13 UTC",
"dateCreated": "2017-09-04 11:49:13 UTC",
"dateModified": "2017-09-05 08:38:27 UTC",
"description": "Merluccius merluccius",
"articleBody": "Merluccius merluccius",
"mainEntityOfPage": "http://dechado09.softgalia.com/productos/index"
}
}
]
}
</script>
There are two ways to implement a list format for your structured data:
Summary page + multiple full details pages
List item A single, all-in-one-page list
My case is a sumary page of articles, and google guide say: "The summary page has a short description of each item in the list, and each description points to a separate details page that is focused entirely on one item."
well the markup must be.
{ "#context": "http://schema.org",
"#type": "ItemList",
"itemListElement":
[
{
"#type":"ListItem",
"position": 0,
"url": "http://dechado09.softgalia.com/productos/bonito-de-norte"
},
{
"#type":"ListItem",
"position": 1,
"url": "http://dechado09.softgalia.com/productos/merluza"
}
]
}