{"@context":"https:\/\/schema.org","@type":"WebPage","metadata":{"page_id":46124,"page_name":"about-us","domain":"www.knottypine-westport.com","url":"https:\/\/www.knottypine-westport.com\/about-us","generated_at":"2026-05-19T13:09:21-07:00","last_modified":"2026-05-19T13:09:19-07:00"},"content":{"complete_text":"\r\n    MoRE THAN A DIVE BAR:WE\u2019RE A WESTPoRT TRADITION\r\n\r\n\r\n    PULL UP A STOOL AND LET THE STORIES POUR.\r\n\n\n\r\nCOMMUNITY ROOTS\r\n\r\nThe Knotty Pine lives and breathes Westport.\r\n\r\n\r\nWe're proud members of the Westport-Grayland Chamber of Commerce because we believe in the businesses and neighbors who keep this community alive. Look around our walls to see decades of local charter boats and fishing crews who've made this place their second home.\r\n\r\n\r\nSupporting Those Who Serve\r\n\r\n\r\nEvery Thursday, we honor all veterans with special pricing (Noon-3pm) because this community has always supported those who've served our country.\r\n\r\n\r\nWhere Stories Live\r\n\r\n\r\nThree generations of families have celebrated, commiserated, and connected within these walls. The stories keep flowing, and new ones get written every day.\r\n\n\n From The Management\n\n\r\n    OUR STORY\r\n\r\nAsk anyone in town, and they\u2019ll tell you:&nbsp;The Knotty Pine sits at the heart of Westport's dockside DNA.\r\nWe've anchored this fishing community for decades. Fishermen finishing long shifts, retirees grabbing lunch, couples sharing jello shots and clam strips. Everyone finds their spot here.\r\n\r\nCome as you are. Our regulars know the rhythm, and newcomers catch on quick. Find your spot and join the conversation.\n\n Come See For Yourself\r\nFirst time or fiftieth time, The Knotty Pine feels like coming home. We're not chasing trends or trying to impress anyone. We're being real, and in today's world, that stands out. Join us for breakfast, a B.L.T., or a beer and a story.\n\n\r\n\n\nWhat We're Known For\r\nStep inside and you'll feel it right away: this is a true Westport hangout. The Knotty Pine is known for its relaxed, no-pressure vibe. It's a place where locals and travelers hang out to catch the game, shoot pool, or warm up with a bowl of clam chowder after work. The menu delivers comfort without complication: French dip, hand-cut fries, creamy artichoke dip, classic grilled cheese with tomato soup. And with reasonably priced drinks, especially during Happy Hour (weekdays from 3 to 6pm), it's no surprise folks tend to linger a little longer.\n\n\u201cOur food is the best reason to come here.\u201d \u2014 Laurie, Manager\r\nWe believe in simple principles:&nbsp;fair prices, full plates, cold beers, and treating people right. That\u2019s why we never charge credit card fees, and it\u2019s why you\u2019ll always get service with personality plus a big smile.\n\n\r\n    \r\n    \r\n        \r\n        \r\n            \r\n        \r\n        \r\n        \r\n            \r\n        \r\n        \r\n        \r\n        \r\n            \r\n            \r\n            \r\n                \r\n                    \r\n                        \r\n                            \r\n                                C\r\n                            \r\n                        \r\n                        \r\n                            \r\n                                Chris Crowe\r\n                            \r\n                            \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                5 stars\r\n                            \r\n                            \r\n                                Hidden gem. Local vibe, super, super friendly staff. Phenomenal food. Make sure to try the horseradish fry sauce.\r\n                            \r\n            \r\n                          \r\n            \r\n                \r\n                Read Full Google Review\r\n            \r\n                        \r\n                    \r\n                \r\n            \r\n          \r\n\r\n            \r\n            \r\n                \r\n                    \r\n                        \r\n                            \r\n                                K\r\n                            \r\n                        \r\n                        \r\n                            \r\n                                Kyrsten Jackson\r\n                            \r\n                            \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                5 stars\r\n                            \r\n                            \r\n                                The atmosphere was cozy and welcoming, and the bartender couldn't have been nicer...The BLTwas absolutely delicious\u2014crispy, fresh, and full of flavor.\r\n                            \r\n            \r\n                          \r\n            \r\n                \r\n                Read Full Google Review\r\n                            \r\n                        \r\n                    \r\n                \r\n            \r\n\r\n            \r\n            \r\n                \r\n                    \r\n                        \r\n                            \r\n                                A\r\n                            \r\n                        \r\n                        \r\n                            \r\n                                Artem Babiy\r\n                            \r\n                            \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                5 stars\r\n                            \r\n                            \r\n                                Knotty Pine Tavern is a great and fresh stop for fish n' chips! Crispy, flavorful, and cooked just right\u2014perfect after a day out. Cozy vibe and friendly folks make it a go-to spot. Definitely worth a visit!\r\n                            \r\n            \r\n                          \r\n            \r\n                \r\n                Read Full Google Review\r\n                            \r\n                        \r\n                    \r\n                \r\n            \r\n\r\n            \r\n\r\n            \r\n            \r\n                \r\n                    \r\n                        \r\n                            \r\n                                R\r\n                            \r\n                        \r\n                        \r\n                            \r\n                                Robert Foy\r\n                            \r\n                            \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                5 stars\r\n                            \r\n                            \r\n                                I had one of the best chicken fried steak an eggs in a very long time. My wife had bacon and eggs hash browns and the bloody Mary. It was all just fantastic. The server was the best. I would like to thank everyone at the knotty pine for a great time.\r\n                            \r\n            \r\n                          \r\n            \r\n                \r\n                Read Full Google Review\r\n            \r\n                          \r\n                    \r\n                \r\n            \r\n\r\n           \r\n\r\n        \r\n    \r\n\r\n    \r\n    \r\n        \r\n            \r\n        \r\n    \r\n\r\n\r\n\r\n    class ReviewCarouselWidget {\r\n        constructor() {\r\n            this.currentIndex = 0;\r\n            this.totalReviews = 3;\r\n            this.autoPlay = true;\r\n            this.autoPlayInterval = null;\r\n            \r\n            \/\/ Wait for elements to be available\r\n            this.waitForElements();\r\n        }\r\n        \r\n        waitForElements() {\r\n            const checkElements = () => {\r\n                this.container = document.getElementById('reviewCarouselContainer');\r\n                this.prevBtn = document.getElementById('reviewCarouselPrevBtn');\r\n                this.nextBtn = document.getElementById('reviewCarouselNextBtn');\r\n                this.dotsContainer = document.getElementById('reviewCarouselDotsContainer');\r\n                \r\n                console.log('Checking elements:', {\r\n                    container: !!this.container,\r\n                    prevBtn: !!this.prevBtn,\r\n                    nextBtn: !!this.nextBtn,\r\n                    dotsContainer: !!this.dotsContainer\r\n                });\r\n                \r\n                if (this.container && this.prevBtn && this.nextBtn && this.dotsContainer) {\r\n                    console.log('All elements found, initializing carousel');\r\n                    this.init();\r\n                } else {\r\n                    console.log('Elements not ready, retrying in 100ms');\r\n                    setTimeout(checkElements, 100);\r\n                }\r\n            };\r\n            \r\n            checkElements();\r\n        }\r\n        \r\n        init() {\r\n            window.reviewCarouselInitialized = true;\r\n            console.log('Carousel initializing...');\r\n            \r\n            this.createDots();\r\n            this.updateCarousel();\r\n            this.startAutoPlay();\r\n            \r\n            \/\/ Event listeners with console logs for debugging\r\n            this.prevBtn.addEventListener('click', (e) => {\r\n                console.log('Prev button clicked');\r\n                e.preventDefault();\r\n                this.prev();\r\n            });\r\n            this.nextBtn.addEventListener('click', (e) => {\r\n                console.log('Next button clicked');\r\n                e.preventDefault();\r\n                this.next();\r\n            });\r\n            \r\n            \/\/ Pause auto-play on hover\r\n            this.container.parentElement.addEventListener('mouseenter', () => this.pauseAutoPlay());\r\n            this.container.parentElement.addEventListener('mouseleave', () => this.resumeAutoPlay());\r\n            \r\n            console.log('Carousel initialized successfully');\r\n        }\r\n        \r\n        createDots() {\r\n            this.dotsContainer.innerHTML = '';\r\n            for (let i = 0; i < this.totalReviews; i++) {\r\n                const dot = document.createElement('button');\r\n                dot.className = 'w-2 h-2 rounded-full transition-all duration-200';\r\n                dot.addEventListener('click', () => this.goToSlide(i));\r\n                this.dotsContainer.appendChild(dot);\r\n            }\r\n        }\r\n        \r\n        updateCarousel() {\r\n            const translateX = -this.currentIndex * 100;\r\n            this.container.style.transform = `translateX(${translateX}%)`;\r\n            \r\n            \/\/ Update dots\r\n            const dots = this.dotsContainer.children;\r\n            for (let i = 0; i < dots.length; i++) {\r\n                if (i === this.currentIndex) {\r\n                    dots[i].className = 'w-2 h-2 rounded-full bg-blue-500 transition-all duration-200';\r\n                } else {\r\n                    dots[i].className = 'w-2 h-2 rounded-full bg-gray-300 hover:bg-gray-400 transition-all duration-200';\r\n                }\r\n            }\r\n        }\r\n        \r\n        next() {\r\n            console.log('Next called, current index:', this.currentIndex);\r\n            this.currentIndex = (this.currentIndex + 1) % this.totalReviews;\r\n            console.log('New index:', this.currentIndex);\r\n            this.updateCarousel();\r\n        }\r\n        \r\n        prev() {\r\n            console.log('Prev called, current index:', this.currentIndex);\r\n            this.currentIndex = (this.currentIndex - 1 + this.totalReviews) % this.totalReviews;\r\n            console.log('New index:', this.currentIndex);\r\n            this.updateCarousel();\r\n        }\r\n        \r\n        goToSlide(index) {\r\n            this.currentIndex = index;\r\n            this.updateCarousel();\r\n        }\r\n        \r\n        startAutoPlay() {\r\n            if (this.autoPlay) {\r\n                this.autoPlayInterval = setInterval(() => this.next(), 5000);\r\n            }\r\n        }\r\n        \r\n        pauseAutoPlay() {\r\n            if (this.autoPlayInterval) {\r\n                clearInterval(this.autoPlayInterval);\r\n            }\r\n        }\r\n        \r\n        resumeAutoPlay() {\r\n            if (this.autoPlay) {\r\n                this.startAutoPlay();\r\n            }\r\n        }\r\n    }\r\n    \r\n    \/\/ Initialize carousel immediately and also on DOM ready\r\n    if (document.readyState === 'loading') {\r\n        document.addEventListener('DOMContentLoaded', () => {\r\n            console.log('DOM loaded, starting carousel');\r\n            new ReviewCarouselWidget();\r\n        });\r\n    } else {\r\n        console.log('DOM already loaded, starting carousel immediately');\r\n        new ReviewCarouselWidget();\r\n    }\r\n    \r\n    \/\/ Also try after a short delay as backup\r\n    setTimeout(() => {\r\n        if (!window.reviewCarouselInitialized) {\r\n            console.log('Backup initialization attempt');\r\n            new ReviewCarouselWidget();\r\n        }\r\n    }, 500);\r\n","headings":[{"level":1,"text":"MoRE THAN A DIVE BAR:WE\u2019RE A WESTPoRT TRADITION","from_bloq":624998,"tag":"h1"},{"level":3,"text":"PULL UP A STOOL AND LET THE STORIES POUR.","from_bloq":624998,"tag":"h3"},{"level":2,"text":"COMMUNITY ROOTS","from_bloq":625008,"tag":"h2"},{"level":2,"text":"From The Management","from_bloq":625011,"tag":"h2"},{"level":2,"text":"OUR STORY","from_bloq":624945,"tag":"h2"},{"level":2,"text":"Come See For Yourself","from_bloq":625020,"tag":"h2"},{"level":3,"text":"What We're Known For","from_bloq":625001,"tag":"h3"}],"paragraphs":[{"text":"The Knotty Pine lives and breathes Westport.","source_bloq_id":625008,"position":0},{"text":"We're proud members of the Westport-Grayland Chamber of Commerce because we believe in the businesses and neighbors who keep this community alive. Look around our walls to see decades of local charter boats and fishing crews who've made this place their second home.","source_bloq_id":625008,"position":0},{"text":"Supporting Those Who Serve","source_bloq_id":625008,"position":0},{"text":"Every Thursday, we honor all veterans with special pricing (Noon-3pm) because this community has always supported those who've served our country.","source_bloq_id":625008,"position":0},{"text":"Where Stories Live","source_bloq_id":625008,"position":0},{"text":"Three generations of families have celebrated, commiserated, and connected within these walls. The stories keep flowing, and new ones get written every day.","source_bloq_id":625008,"position":0},{"text":"Ask anyone in town, and they\u2019ll tell you:\u00a0The Knotty Pine sits at the heart of Westport's dockside DNA.","source_bloq_id":624945,"position":0},{"text":"We've anchored this fishing community for decades. Fishermen finishing long shifts, retirees grabbing lunch, couples sharing jello shots and clam strips. Everyone finds their spot here.","source_bloq_id":624945,"position":0},{"text":"Come as you are. Our regulars know the rhythm, and newcomers catch on quick. Find your spot and join the conversation.","source_bloq_id":624945,"position":0},{"text":"First time or fiftieth time, The Knotty Pine feels like coming home. We're not chasing trends or trying to impress anyone. We're being real, and in today's world, that stands out. Join us for breakfast, a B.L.T., or a beer and a story.","source_bloq_id":625020,"position":0},{"text":"Step inside and you'll feel it right away: this is a true Westport hangout. The Knotty Pine is known for its relaxed, no-pressure vibe. It's a place where locals and travelers hang out to catch the game, shoot pool, or warm up with a bowl of clam chowder after work. The menu delivers comfort without complication: French dip, hand-cut fries, creamy artichoke dip, classic grilled cheese with tomato soup. And with reasonably priced drinks, especially during Happy Hour (weekdays from 3 to 6pm), it's no surprise folks tend to linger a little longer.","source_bloq_id":625001,"position":2},{"text":"\u201cOur food is the best reason to come here.\u201d \u2014 Laurie, ManagerWe believe in simple principles:\u00a0fair prices, full plates, cold beers, and treating people right. That\u2019s why we never charge credit card fees, and it\u2019s why you\u2019ll always get service with personality plus a big smile.","source_bloq_id":625016,"position":3},{"text":"We believe in simple principles:\u00a0fair prices, full plates, cold beers, and treating people right. That\u2019s why we never charge credit card fees, and it\u2019s why you\u2019ll always get service with personality plus a big smile.","source_bloq_id":625016,"position":3}],"sections":[{"section_id":"section_1","heading":"MoRE THAN A DIVE BAR:WE\u2019RE A WESTPoRT TRADITION","full_text":"MoRE THAN A DIVE BAR:WE\u2019RE A WESTPoRT TRADITION PULL UP A STOOL AND LET THE STORIES POUR.","source_bloq_id":624998,"bloq_type":"bloq-rich-text-editors","position":0,"word_count":19,"citeable":true},{"section_id":"section_2","heading":"COMMUNITY ROOTS","full_text":"COMMUNITY ROOTS The Knotty Pine lives and breathes Westport. We're proud members of the Westport-Grayland Chamber of Commerce because we believe in the businesses and neighbors who keep this community alive. Look around our walls to see decades of local charter boats and fishing crews who've made this place their second home. Supporting Those Who Serve Every Thursday, we honor all veterans with special pricing (Noon-3pm) because this community has always supported those who've served our country. Where Stories Live Three generations of families have celebrated, commiserated, and connected within these walls. The stories keep flowing, and new ones get written every day.","source_bloq_id":625008,"bloq_type":"bloq-rich-text-editors","position":0,"word_count":104,"citeable":true},{"section_id":"section_3","heading":"From The Management","full_text":"From The Management","source_bloq_id":625011,"bloq_type":"bloq-rich-text-editors","position":0,"word_count":3,"citeable":true},{"section_id":"section_4","heading":"OUR STORY","full_text":"OUR STORY Ask anyone in town, and they\u2019ll tell you:&nbsp;The Knotty Pine sits at the heart of Westport's dockside DNA. We've anchored this fishing community for decades. Fishermen finishing long shifts, retirees grabbing lunch, couples sharing jello shots and clam strips. Everyone finds their spot here. Come as you are. Our regulars know the rhythm, and newcomers catch on quick. Find your spot and join the conversation.","source_bloq_id":624945,"bloq_type":"bloq-rich-text-editors","position":0,"word_count":70,"citeable":true},{"section_id":"section_5","heading":"Come See For Yourself","full_text":"Come See For Yourself First time or fiftieth time, The Knotty Pine feels like coming home. We're not chasing trends or trying to impress anyone. We're being real, and in today's world, that stands out. Join us for breakfast, a B.L.T., or a beer and a story.","source_bloq_id":625020,"bloq_type":"bloq-rich-text-editors","position":0,"word_count":49,"citeable":true},{"section_id":"section_6","heading":"","full_text":"VISIT US","source_bloq_id":625017,"bloq_type":"bloq-buttons","position":1,"word_count":2,"citeable":true},{"section_id":"section_7","heading":"What We're Known For","full_text":"What We're Known For Step inside and you'll feel it right away: this is a true Westport hangout. The Knotty Pine is known for its relaxed, no-pressure vibe. It's a place where locals and travelers hang out to catch the game, shoot pool, or warm up with a bowl of clam chowder after work. The menu delivers comfort without complication: French dip, hand-cut fries, creamy artichoke dip, classic grilled cheese with tomato soup. And with reasonably priced drinks, especially during Happy Hour (weekdays from 3 to 6pm), it's no surprise folks tend to linger a little longer.","source_bloq_id":625001,"bloq_type":"bloq-rich-text-editors","position":2,"word_count":96,"citeable":true},{"section_id":"section_8","heading":"","full_text":"\u201cOur food is the best reason to come here.\u201d \u2014 Laurie, Manager We believe in simple principles:&nbsp;fair prices, full plates, cold beers, and treating people right. That\u2019s why we never charge credit card fees, and it\u2019s why you\u2019ll always get service with personality plus a big smile.","source_bloq_id":625016,"bloq_type":"bloq-rich-text-editors","position":3,"word_count":51,"citeable":true},{"section_id":"section_9","heading":"","full_text":"C Chris Crowe 5 stars Hidden gem. Local vibe, super, super friendly staff. Phenomenal food. Make sure to try the horseradish fry sauce. Read Full Google Review K Kyrsten Jackson 5 stars The atmosphere was cozy and welcoming, and the bartender couldn't have been nicer...The BLTwas absolutely delicious\u2014crispy, fresh, and full of flavor. Read Full Google Review A Artem Babiy 5 stars Knotty Pine Tavern is a great and fresh stop for fish n' chips! Crispy, flavorful, and cooked just right\u2014perfect after a day out. Cozy vibe and friendly folks make it a go-to spot. Definitely worth a visit! Read Full Google Review R Robert Foy 5 stars I had one of the best chicken fried steak an eggs in a very long time. My wife had bacon and eggs hash browns and the bloody Mary. It was all just fantastic. The server was the best. I would like to thank everyone at the knotty pine for a great time. Read Full Google Review","source_bloq_id":625160,"bloq_type":"bloq-htmls","position":3,"word_count":163,"citeable":true}],"word_count":941,"character_count":12701,"schema_description":"\r\n    \r\n    \r\n        \r\n        \r\n            \r\n        \r\n        \r\n        \r\n            \r\n        \r\n        \r\n        \r\n        \r\n            \r\n            \r\n            \r\n                \r\n        ...","business_description":"Located in the heart of Westport, WA at 201 E Dock St, The Knotty Pine Bar & Grill is the go-to spot for locals, crabbers, road-trippers, and easygoing travelers since 1942.","schema_enhanced":true,"last_schema_update":"2026-05-19 13:09:21 PDT"},"media":{"images":[{"url":"\/\/cdn.bloqs.com\/4095-9648\/Westport-Grayland-Chamber-of-Commerce-White-1752177547.webp","alt":"A dove with an olive branch in its beak, hovering in front of a blue circular background, symbolizing peace. The image has a clean, white background.","has_alt":true,"source_bloq_id":625007,"bloq_type":"bloq-images","position_in_page":0},{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4095-9648\/o--1--1752266319.webp","alt":"A plate of steamed clams in a broth with herbs and vegetables, served with two long slices of toasted bread and lemon wedges on a white plate.","has_alt":true,"source":"schema_gallery","is_gallery_image":true},{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4095-9648\/about-us-smiles-2-1752512880.webp","alt":"Two people smiling at a bar, seated with drinks on the counter. The bar has wooden walls, various signs, and two TVs mounted, one playing Netflix and the other showing news.","has_alt":true,"source":"schema_gallery","is_gallery_image":true},{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4095-9648\/IMG-0115-1747571539.webp","alt":"A detailed model ship named \"DEUTZ\" on display in a glass case, with TV screens and neon signs reflected in the background. The ship has visible rigging and deck equipment.","has_alt":true,"source":"schema_gallery","is_gallery_image":true},{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4095-9648\/about-us-smiles-1752512894.webp","alt":"Three women smiling and holding drinks with straws in a cozy bar setting. Neon signs and wooden walls are visible in the background.","has_alt":true,"source":"schema_gallery","is_gallery_image":true},{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4095-9648\/Screenshot-2025-07-11-at-1-34-52---PM-1752266286.webp","alt":"A Bloody Mary cocktail in a Seattle Seahawks glass, garnished with celery, lemon slices, pickles, meat, and a straw, placed on a bar counter with a blue coaster.","has_alt":true,"source":"schema_gallery","is_gallery_image":true},{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4095-9648\/Westport-Grayland-Chamber-of-Commerce-White-1752177547.webp","alt":"A dove with an olive branch in its beak, hovering in front of a blue circular background, symbolizing peace. The image has a clean, white background.","has_alt":true,"source":"schema_image","width":326,"height":232}],"videos":[],"galleries":[{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4095-9648\/o--1--1752266319.webp","description":"A plate of steamed clams in a broth with herbs and vegetables, served with two long slices of toasted bread and lemon wedges on a white plate.","source":"schema_gallery","in_gallery":true},{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4095-9648\/about-us-smiles-2-1752512880.webp","description":"Two people smiling at a bar, seated with drinks on the counter. The bar has wooden walls, various signs, and two TVs mounted, one playing Netflix and the other showing news.","source":"schema_gallery","in_gallery":true},{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4095-9648\/IMG-0115-1747571539.webp","description":"A detailed model ship named \"DEUTZ\" on display in a glass case, with TV screens and neon signs reflected in the background. The ship has visible rigging and deck equipment.","source":"schema_gallery","in_gallery":true},{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4095-9648\/about-us-smiles-1752512894.webp","description":"Three women smiling and holding drinks with straws in a cozy bar setting. Neon signs and wooden walls are visible in the background.","source":"schema_gallery","in_gallery":true},{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4095-9648\/Screenshot-2025-07-11-at-1-34-52---PM-1752266286.webp","description":"A Bloody Mary cocktail in a Seattle Seahawks glass, garnished with celery, lemon slices, pickles, meat, and a straw, placed on a bar counter with a blue coaster.","source":"schema_gallery","in_gallery":true}]},"links":{"internal":[],"external":[{"url":"https:\/\/www.westportgrayland-chamber.org\/","text":"Westport-Grayland Chamber of Commerce","from_bloq":625008,"bloq_type":"bloq-rich-text-editors","position":0},{"url":"https:\/\/g.co\/kgs\/dyXm5QA","text":"\r\n                    \r\n                        \r\n                            \r\n                                C\r\n                            \r\n                        \r\n                        \r\n                            \r\n                                Chris Crowe\r\n                            \r\n                            \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                5 stars\r\n                            \r\n                            \r\n                                Hidden gem. Local vibe, super, super friendly staff. Phenomenal food. Make sure to try the horseradish fry sauce.\r\n                            \r\n            \r\n                          \r\n            \r\n                \r\n                Read Full Google Review\r\n            \r\n                        \r\n                    \r\n                ","from_bloq":625160,"bloq_type":"bloq-htmls","position":3},{"url":"https:\/\/g.co\/kgs\/4toU7aE","text":"\r\n                    \r\n                        \r\n                            \r\n                                K\r\n                            \r\n                        \r\n                        \r\n                            \r\n                                Kyrsten Jackson\r\n                            \r\n                            \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                5 stars\r\n                            \r\n                            \r\n                                The atmosphere was cozy and welcoming, and the bartender couldn't have been nicer...The BLTwas absolutely delicious\u2014crispy, fresh, and full of flavor.\r\n                            \r\n            \r\n                          \r\n            \r\n                \r\n                Read Full Google Review\r\n                            \r\n                        \r\n                    \r\n                ","from_bloq":625160,"bloq_type":"bloq-htmls","position":3},{"url":"https:\/\/g.co\/kgs\/XSxKLB1","text":"\r\n                    \r\n                        \r\n                            \r\n                                A\r\n                            \r\n                        \r\n                        \r\n                            \r\n                                Artem Babiy\r\n                            \r\n                            \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                5 stars\r\n                            \r\n                            \r\n                                Knotty Pine Tavern is a great and fresh stop for fish n' chips! Crispy, flavorful, and cooked just right\u2014perfect after a day out. Cozy vibe and friendly folks make it a go-to spot. Definitely worth a visit!\r\n                            \r\n            \r\n                          \r\n            \r\n                \r\n                Read Full Google Review\r\n                            \r\n                        \r\n                    \r\n                ","from_bloq":625160,"bloq_type":"bloq-htmls","position":3},{"url":"https:\/\/g.co\/kgs\/CNrDSza","text":"\r\n                    \r\n                        \r\n                            \r\n                                R\r\n                            \r\n                        \r\n                        \r\n                            \r\n                                Robert Foy\r\n                            \r\n                            \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                5 stars\r\n                            \r\n                            \r\n                                I had one of the best chicken fried steak an eggs in a very long time. My wife had bacon and eggs hash browns and the bloody Mary. It was all just fantastic. The server was the best. I would like to thank everyone at the knotty pine for a great time.\r\n                            \r\n            \r\n                          \r\n            \r\n                \r\n                Read Full Google Review\r\n            \r\n                          \r\n                    \r\n                ","from_bloq":625160,"bloq_type":"bloq-htmls","position":3}],"navigation":[]},"entities":{"people":[],"organizations":[],"products":["Bar","Pub","American"],"locations":["Westport","Wa"],"landmarks":[],"businesses":["Knotty Pine Bar & Grill"],"events":[]},"schema_org":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"https:\/\/www.knottypine-westport.com#website","url":"https:\/\/www.knottypine-westport.com","name":"Knotty Pine Bar & Grill"},{"@type":"WebPage","@id":"https:\/\/www.knottypine-westport.com#webpage","url":"https:\/\/www.knottypine-westport.com\/about-us","name":"About Us","description":"Located in the heart of Westport, WA, The Knotty Pine Bar & Grill is the go-to spot for locals, crabbers, road-trippers, and easygoing travelers since 1942.","isPartOf":{"@id":"https:\/\/www.knottypine-westport.com#website"},"about":{"@id":"https:\/\/www.knottypine-westport.com#restaurant"}},{"@type":"BreadcrumbList","itemListElement":[]},{"@type":"BarOrPub","@id":"https:\/\/www.knottypine-westport.com#restaurant","name":"Knotty Pine Bar & Grill","description":"Located in the heart of Westport, WA at 201 E Dock St, The Knotty Pine Bar & Grill is the go-to spot for locals, crabbers, road-trippers, and easygoing travelers since 1942.","url":"https:\/\/www.knottypine-westport.com","priceRange":"$$","address":{"@type":"PostalAddress","streetAddress":"201 E Dock St","addressLocality":"Westport","addressRegion":"Wa","postalCode":"98595","addressCountry":"US"},"image":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4095-9648\/Westport-Grayland-Chamber-of-Commerce-White-1752177547.webp","aggregateRating":{"@type":"AggregateRating","ratingValue":"5","reviewCount":"4"},"servesCuisine":["Bar","Pub","American"],"telephone":"+1-360-268-0591","contactPoint":{"@type":"ContactPoint","telephone":"360-268-0591","contactType":"Bar","areaServed":"Westport, Grayland","availableLanguage":"English"},"openingHoursSpecification":[{"@type":"OpeningHoursSpecification","dayOfWeek":"Sunday","opens":"08:00","closes":"00:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":"Monday","opens":"08:00","closes":"00:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":"Tuesday","opens":"08:00","closes":"00:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":"Wednesday","opens":"08:00","closes":"00:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":"Thursday","opens":"08:00","closes":"00:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":"Friday","opens":"08:00","closes":"00:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":"Saturday","opens":"08:00","closes":"00:00"}]},{"name":"Photo Gallery","@type":"ImageGallery","image":[{"@type":"ImageObject","contentUrl":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4095-9648\/o--1--1752266319.webp","description":"A plate of steamed clams in a broth with herbs and vegetables, served with two long slices of toasted bread and lemon wedges on a white plate."},{"@type":"ImageObject","contentUrl":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4095-9648\/about-us-smiles-2-1752512880.webp","description":"Two people smiling at a bar, seated with drinks on the counter. The bar has wooden walls, various signs, and two TVs mounted, one playing Netflix and the other showing news."},{"@type":"ImageObject","contentUrl":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4095-9648\/IMG-0115-1747571539.webp","description":"A detailed model ship named \"DEUTZ\" on display in a glass case, with TV screens and neon signs reflected in the background. The ship has visible rigging and deck equipment."},{"@type":"ImageObject","contentUrl":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4095-9648\/about-us-smiles-1752512894.webp","description":"Three women smiling and holding drinks with straws in a cozy bar setting. Neon signs and wooden walls are visible in the background."},{"@type":"ImageObject","contentUrl":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4095-9648\/Screenshot-2025-07-11-at-1-34-52---PM-1752266286.webp","description":"A Bloody Mary cocktail in a Seattle Seahawks glass, garnished with celery, lemon slices, pickles, meat, and a straw, placed on a bar counter with a blue coaster."}],"@context":"https:\/\/schema.org","numberOfItems":5},{"url":"https:\/\/www.westportgrayland-chamber.org\/","@type":"ImageObject","width":326,"height":232,"@context":"https:\/\/schema.org","contentUrl":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4095-9648\/Westport-Grayland-Chamber-of-Commerce-White-1752177547.webp","description":"A dove with an olive branch in its beak, hovering in front of a blue circular background, symbolizing peace. The image has a clean, white background."},{"text":"\r\n    \r\n    \r\n        \r\n        \r\n            \r\n        \r\n        \r\n        \r\n            \r\n        \r\n        \r\n        \r\n        \r\n            \r\n            \r\n            \r\n                \r\n                    \r\n                        \r\n                            \r\n                                C\r\n                            \r\n                        \r\n                        \r\n                            \r\n                                Chris Crowe\r\n                            \r\n                            \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                5 stars\r\n                            \r\n                            \r\n                                Hidden gem. Local vibe, super, super friendly staff. Phenomenal food. Make sure to try the horseradish fry sauce.\r\n                            \r\n            \r\n                          \r\n            \r\n                \r\n                Read Full Google Review\r\n            \r\n                        \r\n                    \r\n                \r\n            \r\n          \r\n\r\n            \r\n            \r\n                \r\n                    \r\n                        \r\n                            \r\n                                K\r\n                            \r\n                        \r\n                        \r\n                            \r\n                                Kyrsten Jackson\r\n                            \r\n                            \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                5 stars\r\n                            \r\n                            \r\n                                The atmosphere was cozy and welcoming, and the bartender couldn't have been nicer...The BLTwas absolutely delicious\u2014crispy, fresh, and full of flavor.\r\n                            \r\n            \r\n                          \r\n            \r\n                \r\n                Read Full Google Review\r\n                            \r\n                        \r\n                    \r\n                \r\n            \r\n\r\n            \r\n            \r\n                \r\n                    \r\n                        \r\n                            \r\n                                A\r\n                            \r\n                        \r\n                        \r\n                            \r\n                                Artem Babiy\r\n                            \r\n                            \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                5 stars\r\n                            \r\n                            \r\n                                Knotty Pine Tavern is a great and fresh stop for fish n' chips! Crispy, flavorful, and cooked just right\u2014perfect after a day out. Cozy vibe and friendly folks make it a go-to spot. Definitely worth a visit!\r\n                            \r\n            \r\n                          \r\n            \r\n                \r\n                Read Full Google Review\r\n                            \r\n                        \r\n                    \r\n                \r\n            \r\n\r\n            \r\n\r\n            \r\n            \r\n                \r\n                    \r\n                        \r\n                            \r\n                                R\r\n                            \r\n                        \r\n                        \r\n                            \r\n                                Robert Foy\r\n                            \r\n                            \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                5 stars\r\n                            \r\n                            \r\n                                I had one of the best chicken fried steak an eggs in a very long time. My wife had bacon and eggs hash browns and the bloody Mary. It was all just fantastic. The server was the best. I would like to thank everyone at the knotty pine for a great time.\r\n                            \r\n            \r\n                          \r\n            \r\n                \r\n                Read Full Google Review\r\n            \r\n                          \r\n                    \r\n                \r\n            \r\n\r\n           \r\n\r\n        \r\n    \r\n\r\n    \r\n    \r\n        \r\n            \r\n        \r\n    \r\n\r\n\r\n\r\n    class ReviewCarouselWidget {\r\n        constructor() {\r\n            this.currentIndex = 0;\r\n            this.totalReviews = 3;\r\n            this.autoPlay = true;\r\n            this.autoPlayInterval = null;\r\n            \r\n            \/\/ Wait for elements to be available\r\n            this.waitForElements();\r\n        }\r\n        \r\n        waitForElements() {\r\n            const checkElements = () => {\r\n                this.container = document.getElementById('reviewCarouselContainer');\r\n                this.prevBtn = document.getElementById('reviewCarouselPrevBtn');\r\n                this.nextBtn = document.getElementById('reviewCarouselNextBtn');\r\n                this.dotsContainer = document.getElementById('reviewCarouselDotsContainer');\r\n                \r\n                console.log('Checking elements:', {\r\n                    container: !!this.container,\r\n                    prevBtn: !!this.prevBtn,\r\n                    nextBtn: !!this.nextBtn,\r\n                    dotsContainer: !!this.dotsContainer\r\n                });\r\n                \r\n                if (this.container && this.prevBtn && this.nextBtn && this.dotsContainer) {\r\n                    console.log('All elements found, initializing carousel');\r\n                    this.init();\r\n                } else {\r\n                    console.log('Elements not ready, retrying in 100ms');\r\n                    setTimeout(checkElements, 100);\r\n                }\r\n            };\r\n            \r\n            checkElements();\r\n        }\r\n        \r\n        init() {\r\n            window.reviewCarouselInitialized = true;\r\n            console.log('Carousel initializing...');\r\n            \r\n            this.createDots();\r\n            this.updateCarousel();\r\n            this.startAutoPlay();\r\n            \r\n            \/\/ Event listeners with console logs for debugging\r\n            this.prevBtn.addEventListener('click', (e) => {\r\n                console.log('Prev button clicked');\r\n                e.preventDefault();\r\n                this.prev();\r\n            });\r\n            this.nextBtn.addEventListener('click', (e) => {\r\n                console.log('Next button clicked');\r\n                e.preventDefault();\r\n                this.next();\r\n            });\r\n            \r\n            \/\/ Pause auto-play on hover\r\n            this.container.parentElement.addEventListener('mouseenter', () => this.pauseAutoPlay());\r\n            this.container.parentElement.addEventListener('mouseleave', () => this.resumeAutoPlay());\r\n            \r\n            console.log('Carousel initialized successfully');\r\n        }\r\n        \r\n        createDots() {\r\n            this.dotsContainer.innerHTML = '';\r\n            for (let i = 0; i < this.totalReviews; i++) {\r\n                const dot = document.createElement('button');\r\n                dot.className = 'w-2 h-2 rounded-full transition-all duration-200';\r\n                dot.addEventListener('click', () => this.goToSlide(i));\r\n                this.dotsContainer.appendChild(dot);\r\n            }\r\n        }\r\n        \r\n        updateCarousel() {\r\n            const translateX = -this.currentIndex * 100;\r\n            this.container.style.transform = `translateX(${translateX}%)`;\r\n            \r\n            \/\/ Update dots\r\n            const dots = this.dotsContainer.children;\r\n            for (let i = 0; i < dots.length; i++) {\r\n                if (i === this.currentIndex) {\r\n                    dots[i].className = 'w-2 h-2 rounded-full bg-blue-500 transition-all duration-200';\r\n                } else {\r\n                    dots[i].className = 'w-2 h-2 rounded-full bg-gray-300 hover:bg-gray-400 transition-all duration-200';\r\n                }\r\n            }\r\n        }\r\n        \r\n        next() {\r\n            console.log('Next called, current index:', this.currentIndex);\r\n            this.currentIndex = (this.currentIndex + 1) % this.totalReviews;\r\n            console.log('New index:', this.currentIndex);\r\n            this.updateCarousel();\r\n        }\r\n        \r\n        prev() {\r\n            console.log('Prev called, current index:', this.currentIndex);\r\n            this.currentIndex = (this.currentIndex - 1 + this.totalReviews) % this.totalReviews;\r\n            console.log('New index:', this.currentIndex);\r\n            this.updateCarousel();\r\n        }\r\n        \r\n        goToSlide(index) {\r\n            this.currentIndex = index;\r\n            this.updateCarousel();\r\n        }\r\n        \r\n        startAutoPlay() {\r\n            if (this.autoPlay) {\r\n                this.autoPlayInterval = setInterval(() => this.next(), 5000);\r\n            }\r\n        }\r\n        \r\n        pauseAutoPlay() {\r\n            if (this.autoPlayInterval) {\r\n                clearInterval(this.autoPlayInterval);\r\n            }\r\n        }\r\n        \r\n        resumeAutoPlay() {\r\n            if (this.autoPlay) {\r\n                this.startAutoPlay();\r\n            }\r\n        }\r\n    }\r\n    \r\n    \/\/ Initialize carousel immediately and also on DOM ready\r\n    if (document.readyState === 'loading') {\r\n        document.addEventListener('DOMContentLoaded', () => {\r\n            console.log('DOM loaded, starting carousel');\r\n            new ReviewCarouselWidget();\r\n        });\r\n    } else {\r\n        console.log('DOM already loaded, starting carousel immediately');\r\n        new ReviewCarouselWidget();\r\n    }\r\n    \r\n    \/\/ Also try after a short delay as backup\r\n    setTimeout(() => {\r\n        if (!window.reviewCarouselInitialized) {\r\n            console.log('Backup initialization attempt');\r\n            new ReviewCarouselWidget();\r\n        }\r\n    }, 500);\r\n","@type":"WebPage","@context":"https:\/\/schema.org","description":"\r\n    \r\n    \r\n        \r\n        \r\n            \r\n        \r\n        \r\n        \r\n            \r\n        \r\n        \r\n        \r\n        \r\n            \r\n            \r\n            \r\n                \r\n        ..."}],"_8bloqs_meta":{"generated_by":"AI","prompt_id":43,"prompt_slug":"scheam","generated_at":"2026-01-09 11:11:54"},"generated":"2026-05-19 13:09:21 PDT","generatedBy":"cp"},"bloqs":[{"bloq_item_id":624998,"bloq_type":"bloq-rich-text-editors","display_order":0,"data":{"bloq_type":"rich_text_content","description":"Rich text content with formatted HTML","content_type":"text","timestamp":"2026-05-19T13:09:17-07:00","statistics":{"word_count":19,"image_count":0,"link_count":0,"images_with_alt":0},"images":[],"links":[],"plain_text":"\r\n    MoRE THAN A DIVE BAR:WE\u2019RE A WESTPoRT TRADITION\r\n\r\n\r\n    PULL UP A STOOL AND LET THE STORIES POUR.\r\n","paragraphs":[]}},{"bloq_item_id":625022,"bloq_type":"bloq-separators","display_order":0,"data":{"content_type":"spacer","purpose":"Visual spacing element - no content","seo_relevant":false}},{"bloq_item_id":625002,"bloq_type":"bloq-galleries","display_order":0,"data":{"bloq_type":"photo_gallery","description":"A photo gallery with multiple images, captions, and optional links","total_images":5,"images":[{"position":1,"image_url":"\/\/cdn.bloqs.com\/4095-9648\/o--1--1752266319.webp","alt_text":"A plate of steamed clams in a broth with herbs and vegetables, served with two long slices of toasted bread and lemon wedges on a white plate.","has_alt":true,"caption":null,"has_caption":false,"link":null,"has_link":false},{"position":2,"image_url":"\/\/cdn.bloqs.com\/4095-9648\/about-us-smiles-2-1752512880.webp","alt_text":"Two people smiling at a bar, seated with drinks on the counter. The bar has wooden walls, various signs, and two TVs mounted, one playing Netflix and the other showing news.","has_alt":true,"caption":null,"has_caption":false,"link":null,"has_link":false},{"position":3,"image_url":"\/\/cdn.bloqs.com\/4095-9648\/IMG-0115-1747571539.webp","alt_text":"A detailed model ship named \"DEUTZ\" on display in a glass case, with TV screens and neon signs reflected in the background. The ship has visible rigging and deck equipment.","has_alt":true,"caption":null,"has_caption":false,"link":null,"has_link":false},{"position":4,"image_url":"\/\/cdn.bloqs.com\/4095-9648\/about-us-smiles-1752512894.webp","alt_text":"Three women smiling and holding drinks with straws in a cozy bar setting. Neon signs and wooden walls are visible in the background.","has_alt":true,"caption":null,"has_caption":false,"link":null,"has_link":false},{"position":5,"image_url":"\/\/cdn.bloqs.com\/4095-9648\/Screenshot-2025-07-11-at-1-34-52---PM-1752266286.webp","alt_text":"A Bloody Mary cocktail in a Seattle Seahawks glass, garnished with celery, lemon slices, pickles, meat, and a straw, placed on a bar counter with a blue coaster.","has_alt":true,"caption":null,"has_caption":false,"link":null,"has_link":false}],"llm_usefulness_score":75}},{"bloq_item_id":625007,"bloq_type":"bloq-images","display_order":0,"data":{"bloq_type":"single_image","description":"A single image bloq with optional link","image":{"url":"\/\/cdn.bloqs.com\/4095-9648\/Westport-Grayland-Chamber-of-Commerce-White-1752177547.webp","alt_text":"A dove with an olive branch in its beak, hovering in front of a blue circular background, symbolizing peace. The image has a clean, white background.","has_alt":true,"width":326,"height":232},"link":{"url":"https:\/\/www.westportgrayland-chamber.org\/","has_link":true},"llm_usefulness_score":80}},{"bloq_item_id":625008,"bloq_type":"bloq-rich-text-editors","display_order":0,"data":{"bloq_type":"rich_text_content","description":"Rich text content with formatted HTML","content_type":"text","timestamp":"2026-05-19T13:09:18-07:00","statistics":{"word_count":104,"image_count":0,"link_count":1,"images_with_alt":0},"images":[],"links":[{"position":1,"url":"https:\/\/www.westportgrayland-chamber.org\/","text":"Westport-Grayland Chamber of Commerce"}],"plain_text":"\r\nCOMMUNITY ROOTS\r\n\r\nThe Knotty Pine lives and breathes Westport.\r\n\r\n\r\nWe're proud members of the Westport-Grayland Chamber of Commerce because we believe in the businesses and neighbors who keep this community alive. Look around our walls to see decades of local charter boats and fishing crews who've made this place their second home.\r\n\r\n\r\nSupporting Those Who Serve\r\n\r\n\r\nEvery Thursday, we honor all veterans with special pricing (Noon-3pm) because this community has always supported those who've served our country.\r\n\r\n\r\nWhere Stories Live\r\n\r\n\r\nThree generations of families have celebrated, commiserated, and connected within these walls. The stories keep flowing, and new ones get written every day.\r\n","paragraphs":["The Knotty Pine lives and breathes Westport.","We're proud members of the Westport-Grayland Chamber of Commerce because we believe in the businesses and neighbors who keep this community alive. Look around our walls to see decades of local charter boats and fishing crews who've made this place their second home.","Supporting Those Who Serve","Every Thursday, we honor all veterans with special pricing (Noon-3pm) because this community has always supported those who've served our country.","Where Stories Live","Three generations of families have celebrated, commiserated, and connected within these walls. The stories keep flowing, and new ones get written every day."]}},{"bloq_item_id":625011,"bloq_type":"bloq-rich-text-editors","display_order":0,"data":{"bloq_type":"rich_text_content","description":"Rich text content with formatted HTML","content_type":"text","timestamp":"2026-05-19T13:09:19-07:00","statistics":{"word_count":3,"image_count":0,"link_count":0,"images_with_alt":0},"images":[],"links":[],"plain_text":" From The Management","paragraphs":[]}},{"bloq_item_id":624945,"bloq_type":"bloq-rich-text-editors","display_order":0,"data":{"bloq_type":"rich_text_content","description":"Rich text content with formatted HTML","content_type":"text","timestamp":"2026-05-19T13:09:17-07:00","statistics":{"word_count":70,"image_count":0,"link_count":0,"images_with_alt":0},"images":[],"links":[],"plain_text":"\r\n    OUR STORY\r\n\r\nAsk anyone in town, and they\u2019ll tell you:&nbsp;The Knotty Pine sits at the heart of Westport's dockside DNA.\r\nWe've anchored this fishing community for decades. Fishermen finishing long shifts, retirees grabbing lunch, couples sharing jello shots and clam strips. Everyone finds their spot here.\r\n\r\nCome as you are. Our regulars know the rhythm, and newcomers catch on quick. Find your spot and join the conversation.","paragraphs":["Ask anyone in town, and they\u2019ll tell you:\u00a0The Knotty Pine sits at the heart of Westport's dockside DNA.","We've anchored this fishing community for decades. Fishermen finishing long shifts, retirees grabbing lunch, couples sharing jello shots and clam strips. Everyone finds their spot here.","Come as you are. Our regulars know the rhythm, and newcomers catch on quick. Find your spot and join the conversation."]}},{"bloq_item_id":625020,"bloq_type":"bloq-rich-text-editors","display_order":0,"data":{"bloq_type":"rich_text_content","description":"Rich text content with formatted HTML","content_type":"text","timestamp":"2026-05-19T13:09:19-07:00","statistics":{"word_count":49,"image_count":0,"link_count":0,"images_with_alt":0},"images":[],"links":[],"plain_text":" Come See For Yourself\r\nFirst time or fiftieth time, The Knotty Pine feels like coming home. We're not chasing trends or trying to impress anyone. We're being real, and in today's world, that stands out. Join us for breakfast, a B.L.T., or a beer and a story.","paragraphs":["First time or fiftieth time, The Knotty Pine feels like coming home. We're not chasing trends or trying to impress anyone. We're being real, and in today's world, that stands out. Join us for breakfast, a B.L.T., or a beer and a story."]}},{"bloq_item_id":625019,"bloq_type":"bloq-buttons","display_order":0,"data":{"bloq_type":"button_group","description":"A group of call-to-action buttons with links","total_buttons":1,"buttons":[{"position":1,"text":"<span class=\"w-full block text-2xl\" data-element-index=\"0\">TO  GO<\/span>","link":null,"has_image":false,"image_url":null,"alt_text":null,"style":"style 2"}],"llm_usefulness_score":80}},{"bloq_item_id":625012,"bloq_type":"bloq-separators","display_order":1,"data":{"content_type":"spacer","purpose":"Visual spacing element - no content","seo_relevant":false}},{"bloq_item_id":625021,"bloq_type":"bloq-separators","display_order":1,"data":{"content_type":"spacer","purpose":"Visual spacing element - no content","seo_relevant":false}},{"bloq_item_id":625017,"bloq_type":"bloq-buttons","display_order":1,"data":{"bloq_type":"button_group","description":"A group of call-to-action buttons with links","total_buttons":1,"buttons":[{"position":1,"text":"<span class=\"w-full block text-lg font-bold\" data-element-index=\"0\">VISIT US<\/span>","link":"\/contact","has_image":false,"image_url":null,"alt_text":null,"style":"style 2"}],"llm_usefulness_score":100}},{"bloq_item_id":625010,"bloq_type":"bloq-rich-text-editors","display_order":1,"data":{"bloq_type":"rich_text_content","description":"Rich text content with formatted HTML","content_type":"text","timestamp":"2026-05-19T13:09:19-07:00","statistics":{"word_count":0,"image_count":0,"link_count":0,"images_with_alt":0},"images":[],"links":[],"plain_text":"\r\n","paragraphs":[]}},{"bloq_item_id":625013,"bloq_type":"bloq-separators","display_order":2,"data":{"content_type":"spacer","purpose":"Visual spacing element - no content","seo_relevant":false}},{"bloq_item_id":625001,"bloq_type":"bloq-rich-text-editors","display_order":2,"data":{"bloq_type":"rich_text_content","description":"Rich text content with formatted HTML","content_type":"text","timestamp":"2026-05-19T13:09:17-07:00","statistics":{"word_count":96,"image_count":0,"link_count":0,"images_with_alt":0},"images":[],"links":[],"plain_text":"What We're Known For\r\nStep inside and you'll feel it right away: this is a true Westport hangout. The Knotty Pine is known for its relaxed, no-pressure vibe. It's a place where locals and travelers hang out to catch the game, shoot pool, or warm up with a bowl of clam chowder after work. The menu delivers comfort without complication: French dip, hand-cut fries, creamy artichoke dip, classic grilled cheese with tomato soup. And with reasonably priced drinks, especially during Happy Hour (weekdays from 3 to 6pm), it's no surprise folks tend to linger a little longer.","paragraphs":["Step inside and you'll feel it right away: this is a true Westport hangout. The Knotty Pine is known for its relaxed, no-pressure vibe. It's a place where locals and travelers hang out to catch the game, shoot pool, or warm up with a bowl of clam chowder after work. The menu delivers comfort without complication: French dip, hand-cut fries, creamy artichoke dip, classic grilled cheese with tomato soup. And with reasonably priced drinks, especially during Happy Hour (weekdays from 3 to 6pm), it's no surprise folks tend to linger a little longer."]}},{"bloq_item_id":625016,"bloq_type":"bloq-rich-text-editors","display_order":3,"data":{"bloq_type":"rich_text_content","description":"Rich text content with formatted HTML","content_type":"text","timestamp":"2026-05-19T13:09:19-07:00","statistics":{"word_count":51,"image_count":0,"link_count":0,"images_with_alt":0},"images":[],"links":[],"plain_text":"\u201cOur food is the best reason to come here.\u201d \u2014 Laurie, Manager\r\nWe believe in simple principles:&nbsp;fair prices, full plates, cold beers, and treating people right. That\u2019s why we never charge credit card fees, and it\u2019s why you\u2019ll always get service with personality plus a big smile.","paragraphs":["\u201cOur food is the best reason to come here.\u201d \u2014 Laurie, ManagerWe believe in simple principles:\u00a0fair prices, full plates, cold beers, and treating people right. That\u2019s why we never charge credit card fees, and it\u2019s why you\u2019ll always get service with personality plus a big smile.","We believe in simple principles:\u00a0fair prices, full plates, cold beers, and treating people right. That\u2019s why we never charge credit card fees, and it\u2019s why you\u2019ll always get service with personality plus a big smile."]}},{"bloq_item_id":625160,"bloq_type":"bloq-htmls","display_order":3,"data":{"bloq_type":"content","description":"Raw HTML content with embedded elements","content_type":"html","timestamp":"2026-05-19T13:09:17-07:00","statistics":{"word_count":549,"element_count":94,"image_count":0,"link_count":4,"script_count":1,"style_count":0,"iframe_count":0,"images_with_alt":0},"content_analysis":{"has_scripts":true,"has_styles":false,"security_risk":"high"},"images":[],"links":[{"position":1,"url":"https:\/\/g.co\/kgs\/dyXm5QA","text":"\r\n                    \r\n                        \r\n                            \r\n                                C\r\n                            \r\n                        \r\n                        \r\n                            \r\n                                Chris Crowe\r\n                            \r\n                            \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                5 stars\r\n                            \r\n                            \r\n                                Hidden gem. Local vibe, super, super friendly staff. Phenomenal food. Make sure to try the horseradish fry sauce.\r\n                            \r\n            \r\n                          \r\n            \r\n                \r\n                Read Full Google Review\r\n            \r\n                        \r\n                    \r\n                ","target":"_blank"},{"position":2,"url":"https:\/\/g.co\/kgs\/4toU7aE","text":"\r\n                    \r\n                        \r\n                            \r\n                                K\r\n                            \r\n                        \r\n                        \r\n                            \r\n                                Kyrsten Jackson\r\n                            \r\n                            \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                5 stars\r\n                            \r\n                            \r\n                                The atmosphere was cozy and welcoming, and the bartender couldn't have been nicer...The BLTwas absolutely delicious\u2014crispy, fresh, and full of flavor.\r\n                            \r\n            \r\n                          \r\n            \r\n                \r\n                Read Full Google Review\r\n                            \r\n                        \r\n                    \r\n                ","target":"_blank"},{"position":3,"url":"https:\/\/g.co\/kgs\/XSxKLB1","text":"\r\n                    \r\n                        \r\n                            \r\n                                A\r\n                            \r\n                        \r\n                        \r\n                            \r\n                                Artem Babiy\r\n                            \r\n                            \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                5 stars\r\n                            \r\n                            \r\n                                Knotty Pine Tavern is a great and fresh stop for fish n' chips! Crispy, flavorful, and cooked just right\u2014perfect after a day out. Cozy vibe and friendly folks make it a go-to spot. Definitely worth a visit!\r\n                            \r\n            \r\n                          \r\n            \r\n                \r\n                Read Full Google Review\r\n                            \r\n                        \r\n                    \r\n                ","target":"_blank"},{"position":4,"url":"https:\/\/g.co\/kgs\/CNrDSza","text":"\r\n                    \r\n                        \r\n                            \r\n                                R\r\n                            \r\n                        \r\n                        \r\n                            \r\n                                Robert Foy\r\n                            \r\n                            \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                5 stars\r\n                            \r\n                            \r\n                                I had one of the best chicken fried steak an eggs in a very long time. My wife had bacon and eggs hash browns and the bloody Mary. It was all just fantastic. The server was the best. I would like to thank everyone at the knotty pine for a great time.\r\n                            \r\n            \r\n                          \r\n            \r\n                \r\n                Read Full Google Review\r\n            \r\n                          \r\n                    \r\n                ","target":"_blank"}],"scripts":[{"position":1,"src":"","type":"","has_src":false,"has_content":true,"content_length":5562}],"styles":[],"iframes":[],"plain_text":"\r\n    \r\n    \r\n        \r\n        \r\n            \r\n        \r\n        \r\n        \r\n            \r\n        \r\n        \r\n        \r\n        \r\n            \r\n            \r\n            \r\n                \r\n                    \r\n                        \r\n                            \r\n                                C\r\n                            \r\n                        \r\n                        \r\n                            \r\n                                Chris Crowe\r\n                            \r\n                            \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                5 stars\r\n                            \r\n                            \r\n                                Hidden gem. Local vibe, super, super friendly staff. Phenomenal food. Make sure to try the horseradish fry sauce.\r\n                            \r\n            \r\n                          \r\n            \r\n                \r\n                Read Full Google Review\r\n            \r\n                        \r\n                    \r\n                \r\n            \r\n          \r\n\r\n            \r\n            \r\n                \r\n                    \r\n                        \r\n                            \r\n                                K\r\n                            \r\n                        \r\n                        \r\n                            \r\n                                Kyrsten Jackson\r\n                            \r\n                            \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                5 stars\r\n                            \r\n                            \r\n                                The atmosphere was cozy and welcoming, and the bartender couldn't have been nicer...The BLTwas absolutely delicious\u2014crispy, fresh, and full of flavor.\r\n                            \r\n            \r\n                          \r\n            \r\n                \r\n                Read Full Google Review\r\n                            \r\n                        \r\n                    \r\n                \r\n            \r\n\r\n            \r\n            \r\n                \r\n                    \r\n                        \r\n                            \r\n                                A\r\n                            \r\n                        \r\n                        \r\n                            \r\n                                Artem Babiy\r\n                            \r\n                            \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                5 stars\r\n                            \r\n                            \r\n                                Knotty Pine Tavern is a great and fresh stop for fish n' chips! Crispy, flavorful, and cooked just right\u2014perfect after a day out. Cozy vibe and friendly folks make it a go-to spot. Definitely worth a visit!\r\n                            \r\n            \r\n                          \r\n            \r\n                \r\n                Read Full Google Review\r\n                            \r\n                        \r\n                    \r\n                \r\n            \r\n\r\n            \r\n\r\n            \r\n            \r\n                \r\n                    \r\n                        \r\n                            \r\n                                R\r\n                            \r\n                        \r\n                        \r\n                            \r\n                                Robert Foy\r\n                            \r\n                            \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                \r\n                                5 stars\r\n                            \r\n                            \r\n                                I had one of the best chicken fried steak an eggs in a very long time. My wife had bacon and eggs hash browns and the bloody Mary. It was all just fantastic. The server was the best. I would like to thank everyone at the knotty pine for a great time.\r\n                            \r\n            \r\n                          \r\n            \r\n                \r\n                Read Full Google Review\r\n            \r\n                          \r\n                    \r\n                \r\n            \r\n\r\n           \r\n\r\n        \r\n    \r\n\r\n    \r\n    \r\n        \r\n            \r\n        \r\n    \r\n\r\n\r\n\r\n    class ReviewCarouselWidget {\r\n        constructor() {\r\n            this.currentIndex = 0;\r\n            this.totalReviews = 3;\r\n            this.autoPlay = true;\r\n            this.autoPlayInterval = null;\r\n            \r\n            \/\/ Wait for elements to be available\r\n            this.waitForElements();\r\n        }\r\n        \r\n        waitForElements() {\r\n            const checkElements = () => {\r\n                this.container = document.getElementById('reviewCarouselContainer');\r\n                this.prevBtn = document.getElementById('reviewCarouselPrevBtn');\r\n                this.nextBtn = document.getElementById('reviewCarouselNextBtn');\r\n                this.dotsContainer = document.getElementById('reviewCarouselDotsContainer');\r\n                \r\n                console.log('Checking elements:', {\r\n                    container: !!this.container,\r\n                    prevBtn: !!this.prevBtn,\r\n                    nextBtn: !!this.nextBtn,\r\n                    dotsContainer: !!this.dotsContainer\r\n                });\r\n                \r\n                if (this.container && this.prevBtn && this.nextBtn && this.dotsContainer) {\r\n                    console.log('All elements found, initializing carousel');\r\n                    this.init();\r\n                } else {\r\n                    console.log('Elements not ready, retrying in 100ms');\r\n                    setTimeout(checkElements, 100);\r\n                }\r\n            };\r\n            \r\n            checkElements();\r\n        }\r\n        \r\n        init() {\r\n            window.reviewCarouselInitialized = true;\r\n            console.log('Carousel initializing...');\r\n            \r\n            this.createDots();\r\n            this.updateCarousel();\r\n            this.startAutoPlay();\r\n            \r\n            \/\/ Event listeners with console logs for debugging\r\n            this.prevBtn.addEventListener('click', (e) => {\r\n                console.log('Prev button clicked');\r\n                e.preventDefault();\r\n                this.prev();\r\n            });\r\n            this.nextBtn.addEventListener('click', (e) => {\r\n                console.log('Next button clicked');\r\n                e.preventDefault();\r\n                this.next();\r\n            });\r\n            \r\n            \/\/ Pause auto-play on hover\r\n            this.container.parentElement.addEventListener('mouseenter', () => this.pauseAutoPlay());\r\n            this.container.parentElement.addEventListener('mouseleave', () => this.resumeAutoPlay());\r\n            \r\n            console.log('Carousel initialized successfully');\r\n        }\r\n        \r\n        createDots() {\r\n            this.dotsContainer.innerHTML = '';\r\n            for (let i = 0; i < this.totalReviews; i++) {\r\n                const dot = document.createElement('button');\r\n                dot.className = 'w-2 h-2 rounded-full transition-all duration-200';\r\n                dot.addEventListener('click', () => this.goToSlide(i));\r\n                this.dotsContainer.appendChild(dot);\r\n            }\r\n        }\r\n        \r\n        updateCarousel() {\r\n            const translateX = -this.currentIndex * 100;\r\n            this.container.style.transform = `translateX(${translateX}%)`;\r\n            \r\n            \/\/ Update dots\r\n            const dots = this.dotsContainer.children;\r\n            for (let i = 0; i < dots.length; i++) {\r\n                if (i === this.currentIndex) {\r\n                    dots[i].className = 'w-2 h-2 rounded-full bg-blue-500 transition-all duration-200';\r\n                } else {\r\n                    dots[i].className = 'w-2 h-2 rounded-full bg-gray-300 hover:bg-gray-400 transition-all duration-200';\r\n                }\r\n            }\r\n        }\r\n        \r\n        next() {\r\n            console.log('Next called, current index:', this.currentIndex);\r\n            this.currentIndex = (this.currentIndex + 1) % this.totalReviews;\r\n            console.log('New index:', this.currentIndex);\r\n            this.updateCarousel();\r\n        }\r\n        \r\n        prev() {\r\n            console.log('Prev called, current index:', this.currentIndex);\r\n            this.currentIndex = (this.currentIndex - 1 + this.totalReviews) % this.totalReviews;\r\n            console.log('New index:', this.currentIndex);\r\n            this.updateCarousel();\r\n        }\r\n        \r\n        goToSlide(index) {\r\n            this.currentIndex = index;\r\n            this.updateCarousel();\r\n        }\r\n        \r\n        startAutoPlay() {\r\n            if (this.autoPlay) {\r\n                this.autoPlayInterval = setInterval(() => this.next(), 5000);\r\n            }\r\n        }\r\n        \r\n        pauseAutoPlay() {\r\n            if (this.autoPlayInterval) {\r\n                clearInterval(this.autoPlayInterval);\r\n            }\r\n        }\r\n        \r\n        resumeAutoPlay() {\r\n            if (this.autoPlay) {\r\n                this.startAutoPlay();\r\n            }\r\n        }\r\n    }\r\n    \r\n    \/\/ Initialize carousel immediately and also on DOM ready\r\n    if (document.readyState === 'loading') {\r\n        document.addEventListener('DOMContentLoaded', () => {\r\n            console.log('DOM loaded, starting carousel');\r\n            new ReviewCarouselWidget();\r\n        });\r\n    } else {\r\n        console.log('DOM already loaded, starting carousel immediately');\r\n        new ReviewCarouselWidget();\r\n    }\r\n    \r\n    \/\/ Also try after a short delay as backup\r\n    setTimeout(() => {\r\n        if (!window.reviewCarouselInitialized) {\r\n            console.log('Backup initialization attempt');\r\n            new ReviewCarouselWidget();\r\n        }\r\n    }, 500);\r\n","html_structure":{"complexity":"high","interactive_elements":true,"styling_present":false,"multimedia_content":false}}}],"statistics":{"total_bloqs":17,"bloq_types":{"bloq-rich-text-editors":8,"bloq-separators":4,"bloq-galleries":1,"bloq-images":1,"bloq-buttons":2,"bloq-htmls":1},"total_images":1,"total_links":5,"total_words":941,"total_paragraphs":13,"schema_items":7,"business_fields":9,"media_items":7,"entity_count":6,"merged_schema_version":"3.0"},"citations":{"citeable_statements":[{"id":"stmt_1","statement":"Supporting Those Who Serve Every Thursday, we honor all veterans with special pricing (Noon-3pm) because this community has always supported those who've served our country.","section_id":"section_2","bloq_id":625008,"type":"factual","word_count":26},{"id":"stmt_2","statement":"Where Stories Live Three generations of families have celebrated, commiserated, and connected within these walls.","section_id":"section_2","bloq_id":625008,"type":"factual","word_count":15},{"id":"stmt_3","statement":"What We're Known For Step inside and you'll feel it right away: this is a true Westport hangout.","section_id":"section_7","bloq_id":625001,"type":"factual","word_count":18},{"id":"stmt_4","statement":"The Knotty Pine is known for its relaxed, no-pressure vibe.","section_id":"section_7","bloq_id":625001,"type":"factual","word_count":10},{"id":"stmt_5","statement":"\u201cOur food is the best reason to come here.\u201d \u2014 Laurie, Manager We believe in simple principles:&nbsp;fair prices, full plates, cold beers, and treating people right.","section_id":"section_8","bloq_id":625016,"type":"factual","word_count":27},{"id":"stmt_6","statement":"Read Full Google Review K Kyrsten Jackson 5 stars The atmosphere was cozy and welcoming, and the bartender couldn't have been nicer...The BLTwas absolutely delicious\u2014crispy, fresh, and full of flavor.","section_id":"section_9","bloq_id":625160,"type":"factual","word_count":31},{"id":"stmt_7","statement":"Read Full Google Review A Artem Babiy 5 stars Knotty Pine Tavern is a great and fresh stop for fish n' chips!","section_id":"section_9","bloq_id":625160,"type":"factual","word_count":21},{"id":"stmt_8","statement":"Read Full Google Review R Robert Foy 5 stars I had one of the best chicken fried steak an eggs in a very long time.","section_id":"section_9","bloq_id":625160,"type":"factual","word_count":24},{"id":"stmt_9","statement":"My wife had bacon and eggs hash browns and the bloody Mary.","section_id":"section_9","bloq_id":625160,"type":"factual","word_count":12},{"id":"stmt_10","statement":"It was all just fantastic.","section_id":"section_9","bloq_id":625160,"type":"factual","word_count":5},{"id":"stmt_11","statement":"The server was the best.","section_id":"section_9","bloq_id":625160,"type":"factual","word_count":5}],"source_authority":{"domain":"www.knottypine-westport.com","last_verified":"2026-05-19","content_type":"webpage","url":"https:\/\/www.knottypine-westport.com\/about-us"},"page_structure":{"render_order":[{"bloq_id":624998,"type":"bloq-rich-text-editors","position":0},{"bloq_id":625022,"type":"bloq-separators","position":0},{"bloq_id":625002,"type":"bloq-galleries","position":0},{"bloq_id":625007,"type":"bloq-images","position":0},{"bloq_id":625008,"type":"bloq-rich-text-editors","position":0},{"bloq_id":625011,"type":"bloq-rich-text-editors","position":0},{"bloq_id":624945,"type":"bloq-rich-text-editors","position":0},{"bloq_id":625020,"type":"bloq-rich-text-editors","position":0},{"bloq_id":625019,"type":"bloq-buttons","position":0},{"bloq_id":625012,"type":"bloq-separators","position":1},{"bloq_id":625021,"type":"bloq-separators","position":1},{"bloq_id":625017,"type":"bloq-buttons","position":1},{"bloq_id":625010,"type":"bloq-rich-text-editors","position":1},{"bloq_id":625013,"type":"bloq-separators","position":2},{"bloq_id":625001,"type":"bloq-rich-text-editors","position":2},{"bloq_id":625016,"type":"bloq-rich-text-editors","position":3},{"bloq_id":625160,"type":"bloq-htmls","position":3}]}},"business_profile":{"organization_type":"BarOrPub","name":"Knotty Pine Bar & Grill","description":"Located in the heart of Westport, WA at 201 E Dock St, The Knotty Pine Bar & Grill is the go-to spot for locals, crabbers, road-trippers, and easygoing travelers since 1942.","address":{"street":"201 E Dock St","city":"Westport","state":"Wa","postal_code":"98595","country":"US"},"contact":{"telephone":"360-268-0591","url":"https:\/\/www.knottypine-westport.com","email":"","contact_type":"Bar","area_served":"Westport, Grayland","available_language":"English"},"operational_details":{"price_range":"$$","cuisine":["Bar","Pub","American"],"hours":[{"day":"Sunday","opens":"08:00","closes":"00:00"},{"day":"Monday","opens":"08:00","closes":"00:00"},{"day":"Tuesday","opens":"08:00","closes":"00:00"},{"day":"Wednesday","opens":"08:00","closes":"00:00"},{"day":"Thursday","opens":"08:00","closes":"00:00"},{"day":"Friday","opens":"08:00","closes":"00:00"},{"day":"Saturday","opens":"08:00","closes":"00:00"}],"payment_methods":[]},"ratings":{"aggregate_rating":{"rating_value":5,"best_rating":5,"worst_rating":1,"review_count":4},"review_count":4,"reviews":[]},"amenities":[],"historical_branding":{"alternate_name":"","founding_date":"","founder":"","transition_note":""},"is_primary":true},"schema_metadata":{"schema_version":"3.0","schema_type":"merged_llm_schema","merge_date":"2026-05-19T13:09:21-07:00","source_types":["llm_json","page_schema"],"schema_generated":"2026-05-19 13:09:21 PDT","schema_generated_by":"cp","graph_item_count":7,"validation_status":"complete"},"merged":true,"merge_version":"3.0","merge_timestamp":"2026-05-19T13:09:21-07:00","merge_status":"complete","validation":{"has_schema":true,"has_graph":true,"has_business_profile":true,"has_entities":true,"has_media":true,"schema_item_count":7}}