{"url": "https://webscraper.io/test-sites/tables", "final_url": "https://webscraper.io/test-sites/tables", "fetched_at": "2026-10-26T00:56:19.328Z", "schema_version": "1.0", "content_source": "raw_html", "markdown": "# Test Sites\n\n## Table playground\n\nYou can train using Table selector here.\n\n## Semantically correct table with thead and tbody\n\nTable selector automatically detects header and data rows.\n\n| # | First Name | Last Name | Username |\n| --- | --- | --- | --- |\n| 1 | Mark | Otto | @mdo |\n| 2 | Jacob | Thornton | @fat |\n| 3 | Larry | the Bird | @twitter |\n\n| # | First Name | Last Name | Username |\n| --- | --- | --- | --- |\n| 4 | Harry | Potter | @hp |\n| 5 | John | Snow | @dunno |\n| 6 | Tim | Bean | @timbean |", "markdown_truncated": false, "word_count": 124, "metadata": {"title": "Table Playground | Web Scraper Test Sites", "description": "Test Web Scraper's features on basic table layouts. Practice extracting structured table data.", "authors": [], "published_at": null, "modified_at": null, "site_name": null, "language": "en", "canonical_url": "https://webscraper.io/test-sites/tables", "image": "https://webscraper.io/webscraper-logo-header.png", "type": "website"}, "product": null, "tables": [{"index": 0, "caption": null, "headers": ["#", "First Name", "Last Name", "Username"], "rows": [["1", "Mark", "Otto", "@mdo"], ["2", "Jacob", "Thornton", "@fat"], ["3", "Larry", "the Bird", "@twitter"]], "checks": {"row_count": 3, "column_count": 4, "consistent_width": true}}, {"index": 1, "caption": null, "headers": ["#", "First Name", "Last Name", "Username"], "rows": [["4", "Harry", "Potter", "@hp"], ["5", "John", "Snow", "@dunno"], ["6", "Tim", "Bean", "@timbean"]], "checks": {"row_count": 3, "column_count": 4, "consistent_width": true}}], "product_unresolved": {"reason": "no_product_markup", "detail": "no JSON-LD Product/ProductGroup, product:price meta, schema.org microdata, or price+title+cart heuristic match"}}