{"id":149961,"date":"2026-02-28T17:02:19","date_gmt":"2026-02-28T17:02:19","guid":{"rendered":"https:\/\/devsdata.com\/case-studies\/kroll-series-of-demanding-backend-big-data-projects\/"},"modified":"2026-04-07T08:54:30","modified_gmt":"2026-04-07T08:54:30","slug":"extensive-scraping-demanding-web-content","status":"publish","type":"case_study","link":"https:\/\/devsdata.com\/de\/case-studies\/extensive-scraping-demanding-web-content\/","title":{"rendered":"Kroll, Inc. \u2013 extensive web scraping of complex data sources"},"content":{"rendered":"<section>\n<h1>Kroll, Inc. \u2013 extensive web scraping of complex data sources<\/h1>\n\n    <style>`\n        .post-info {\n            display: flex;\n            flex-direction: row;\n            font-family: Montserrat;\n            font-style: normal;\n            font-weight: 500;\n            font-size: 16px;\n            line-height: 150%;\n            letter-spacing: 0.02em;\n            color: #6D7082;\n            \/*padding-top:32px;*\/\n        }\n\n        .info-container .post-info {\n            display: flex;\n            flex-direction: column;\n            justify-content: space-between;\n        }\n\n        .post-info-main {\n            width: 100%;\n            display: flex;\n            flex-wrap: wrap;\n            row-gap: 5px;\n            column-gap: 20px;\n            grid-template-rows: repeat(3, auto);\n            grid-template-columns: 60px max-content auto;\n            margin-bottom:12px;\n        }\n\n        .with-reviewer {\n            flex-wrap: wrap;\n            row-gap: 5px;\n        }\n\n        .author-name {\n            margin-bottom:4px;\n            grid-row-start: 2;\n            text-decoration: underline;\n            color:black !important;\n        }\n\n        .rank-math-breadcrumb {\n            margin-top:20px;\n            position: relative;\n            z-index: 1;\n        }\n\n        .rank-math-breadcrumb p {\n            margin: 0;\n            white-space: nowrap; \n            overflow: hidden;\n            text-overflow: ellipsis;\n            gap: 8px;\n            display: flex;\n        }\n\n        .rank-math-breadcrumb a {\n            color: #6d7082;\n        }\n\n        .rank-math-breadcrumb a:hover {\n            text-decoration: underline;\n            color: #0332c9;\n        }\n\n        .author-avatar {\n            display: flex;\n            justify-content: center;\n            margin-right: 15px;\n            width: fit-content;\n            grid-row-start: span 2;\n            grid-row-end: 4;\n        }\n\n        .author-avatar picture {\n            display: flex;\n            justify-content: center;\n            align-items: center;\n        }\n\n        .author-avatar.clicked {\n            transform: scale(1.1);\n        }\n\n        .post-info .author-avatar img {\n            min-width:44px;\n            height: 44px;\n            width: auto;\n            object-fit: cover;\n            aspect-ratio: 1\/1;\n            filter: grayscale(1);\n            border-radius: 100%;\n            position: relative;\n            top: 2px;\n        }\n\n        .post-info .author_socials {\n            display: flex;\n            flex-direction: row;\n            align-items: center;\n            grid-row-start: 3;\n            grid-column: span 2;\n            gap: 15px;\n            list-style-type: none;\n            padding: 0;\n            margin: 0;\n        }\n\n        .post-info .author_socials li a {\n            display: flex;\n            align-item: center;\n            text-decoration: none;\n        }\n\n        .author_socials a svg {\n            width: 16px;\n            height: 16px;\n            transition: 0.3s;\n            color: #000;\n        }\n      \n        .author_socials li:hover svg {\n            color: #0332c9;\n        }\n\n        .right-info a {\n            width: fit-content;\n            color: unset;\n        }\n\n        .right-info a:hover {\n            text-decoration: underline;\n        }\n\n        .post-info .clock {\n            position: relative;\n            padding-right: 5px;\n            top: 2px;\n        }\n\n        .post-info .arrow {\n            position: relative;\n            margin-left: 10px;\n            margin-right: 10px;\n            transition: .2s;\n            height: 6px;\n            bottom: 1px;\n        }\n        .post-info .post-info-separator {\n            padding-right: 3px;\n            padding-left: 3px;\n        }\n\n        .reviewer-info {\n            display: flex;\n            flex-direction:column;\n            justify-content: center;\n            align-items: flex-start;\n            grid-row-start: 2;\n            align-self: start;\n            justify-self: end;\n            font-family: \"Montserrat\", arial;\n            color: #000;\n        }\n\n        .reviewer-info.the_first_row {\n            justify-self: start;\n            grid-row-start: 1;\n            grid-column: span 3;\n        }\n\n        .meta-checkmark {\n            width: 20px;\n            height: auto;\n        }\n\n        .reviewer-info a {\n            margin-left: 0;\n            color: #000;\n            text-decoration: underline;\n        }\n        .reviewer-info a:hover {\n            color: #0332c9;\n        }\n        .reviewer-info a:visited {\n            color: #551a8b;\n        }\n        .reviewer-info a:active {\n            color: #0332c9;\n        }\n        .language-dropdown-container {\n            display: inline-block;\n            width: 200px;\n        }\n\n        .language_switcher {\n            display: inline-flex;\n            align-items: center;\n            flex-direction: row;\n            gap: 5px;\n            vertical-align: middle;\n        }\n        \n        .language_switcher .wpml-ls-legacy-dropdown {\n            width: auto;\n            position: relative;\n            vertical-align: middle;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown ul {\n            list-style: none;\n            padding: 0;\n            margin: 0;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-current-language {\n            position: relative;\n            margin-bottom:0;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-current-language > a {\n            padding-left:16px !important;\n            display: flex;\n            align-items: center;\n            justify-content: space-between;\n            width: 100%;\n            box-sizing: border-box;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-sub-menu {\n            display: none;\n            position: absolute;\n            z-index: 10;\n            top: 100%;\n            left: 0;\n            width: 100%;\n            margin: 0;\n            background-color: rgb(238, 238, 238);\n            border-radius: 0 0 8px 8px;\n            overflow: hidden;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-sub-menu li {\n            display: block;\n            width: 100%;\n            margin-bottom:0;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-sub-menu li:hover {\n            background-color:rgba(204, 204, 211) !important\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-sub-menu a {\n            display: block;\n            width: 100%;\n            padding: 8px 15px 8px 16px;\n            margin-left: 0;\n            box-sizing: border-box;\n            white-space: nowrap;\n            text-align: left;\n        }\n\n        @media (hover: hover) {\n            .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-current-language:hover > .wpml-ls-sub-menu {\n                display: block;\n            }\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-current-language.wpml-dropdown-open > .wpml-ls-sub-menu {\n            display: block;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-current-language.wpml-dropdown-open > a.wpml-ls-item-toggle:after {\n            transform: scale(.7) rotate(180deg);\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-current-language.wpml-dropdown-open > .wpml-ls-item-toggle {\n            border-radius: 8px 8px 0 0;\n            background-color: rgba(204, 204, 211);\n        }\n\n        .wpml-ls-legacy-dropdown a:focus {\n            background-color: #FFFFFF;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown a:visited {\n            color: #000000 !important;\n        }\n\n        .wpml-ls-legacy-dropdown a.wpml-ls-item-toggle:after {\n            content: \"\";\n            display: inline-block;\n            transform: scale(.7);\n            height: 20px;\n            width: 20px;\n            background: url(\"\/wp-content\/uploads\/2020\/07\/Vector.png\");\n            margin-left: 5px;\n            background-repeat: no-repeat;\n            background-position: center center;\n            background-size: 10px;\n            border: none;\n            position: unset;\n            background-color: #eee;\n            border-radius: 50%;\n            padding: 10px;\n            transition: transform 0.2s ease-in-out;\n            vertical-align: middle;\n            flex-shrink: 0;\n        }\n\n        .language_switcher a {\n            border: none;\n            padding: 10px 15px;\n        }\n\n        .wpml-ls-legacy-dropdown a.wpml-ls-item-toggle {\n            padding: 0 5px 0 2px !important;\n        }\n\n        @media (hover: hover) {\n            .wpml-ls-sub-menu a.wpml-ls-link:hover,\n            .language_switcher .wpml-ls-legacy-dropdown a.wpml-ls-item-toggle:hover {\n                background-color: rgba(204, 204, 211);\n                color: #000000 !important;\n                text-decoration: none;\n            }\n        }\n\n        .wpml-ls-sub-menu {\n            border: none !important;\n            background-color: transparent;\n        }\n\n        .wpml-ls-sub-menu a {\n            background-color: #FFFFFF;\n        }\n\n        .wpml-ls-current-language .wpml-ls-item-toggle {\n            border-radius: 8px;\n        }\n\n        @media (hover: hover) {\n            .wpml-ls-current-language:hover .wpml-ls-sub-menu a {\n                background-color: rgb(238, 238, 238) !important;\n            }\n\n            .wpml-ls-current-language .wpml-ls-sub-menu a:hover,\n            a.wpml-ls-item-toggle:hover:after {\n                background-color: rgba(204, 204, 211) !important;\n            }\n\n            .wpml-ls-current-language:hover a.wpml-ls-item-toggle:after {\n                transform: scale(.7) rotate(180deg);\n            }\n\n            .wpml-ls-current-language:hover .language_switcher .wpml-ls-legacy-dropdown a {\n                background-color: rgba(109, 112, 130, 0.1);\n            }\n\n            .wpml-ls-current-language:hover .wpml-ls-item-toggle{\n                border-radius: 8px 8px 0 0;\n            }\n\n            .wpml-ls-current-language:hover .wpml-ls-item:last-child .wpml-ls-link{\n                border-radius: 0 0 8px 8px;\n            }\n        }\n\n        .wpml-ls-current-language.wpml-dropdown-open .wpml-ls-sub-menu a {\n            background-color: rgb(238, 238, 238) !important;\n        }\n\n        .wpml-ls-current-language.wpml-dropdown-open .wpml-ls-item:last-child .wpml-ls-link{\n            border-radius: 0 0 8px 8px;\n        }\n\n        ul.language-list {\n            \/*min-height: 71px;*\/\n            margin: 0;\n            overflow: hidden;\n            position: absolute;\n            display: inline-block;\n            list-style: none;\n            vertical-align: top;\n            background-color: #FFFFFF;\n            padding: 0;\n            z-index: 2;\n        }\n\n        ul.language-list.mobile {\n            border-radius: 10px;\n            border: 1px solid rgba(109, 112, 130, 0.1);\n            margin-left: 10px;\n        }\n\n        .language-list.mobile li:hover {\n            background-color: rgba(109, 112, 130, 0.1)\n        }\n\n        .language-list.mobile li:hover a {\n            color: #000000;\n        }\n\n        .dropdown-arrow {\n            display: inline-block;\n            border-radius: 50%;\n            height: 30px;\n            width: 30px;\n        }\n\n        .dropdown-arrow {\n            background-color: rgba(109, 112, 130, 0.1);\n        }\n\n        .dropdown-arrow:hover {\n            background-color: rgba(109, 112, 130, 0.3);\n        }\n\n        .dropdown-arrow.mobile,\n        .dropdown-arrow.mobile:hover {\n            background-color: unset;\n        }\n\n        .language-list li {\n            padding-left: 10px;\n            cursor: pointer;\n            display: none;\n        }\n\n        .language-list li a {\n            color: #6D7082;\n            text-decoration: none;\n        }\n\n        .language-list li:first-child {\n            display: block;\n        }\n\n        .active li {\n            display: block;\n        }\n\n        .rotated {\n            transform: rotate(180deg);\n            bottom: 2px !important;\n        }\n        .bookmark {\n            align-self: center;\n            cursor:pointer;\n            display:none;\n        }\n        \n        .article h1 + p,\n        .article h1 + p + p {\n            margin: 0;\n            margin-bottom: 0 !important;\n        }\n\n        .info-container{\n            \/*min-height:150px;*\/\n            direction: ltr;\n            display: flex;\n            flex-direction: column;\n            justify-content: space-between;\n            padding-top: 20px;\n        }\n        .tags{\n            font-family: \"Montserrat\", sans-serif;\n            display: flex;\n            flex-direction: row;\n            justify-content: flex-start;\n            flex-wrap: wrap;\n            width: 100%;\n            overflow: hidden;\n            font-size: 14px;\n            border-radius: unset;\n            margin-bottom:20px;\n        }\n        .tags a {\n            font-style: normal;\n            line-height: 1.75em;\n            border: 0.5px solid #e2e5e9;\n            margin-right: 7px;\n            margin-top: 7px;\n            transition: 0.2s;\n            transition-property: background;\n            border-radius: 5px;\n            padding: 0.2em 0.8em;\n            color: black;\n        }\n        .tags a:hover {\n            background-color: #c1c7d0;\n        }\n\n        .tags a:visited {\n            color: #000;\n        }\n        .tags a:active {\n            color: #000;\n        }\n        .default-a:focus {\n            background-color: unset;\n        }\n\n        .default-a:hover{\n            text-decoration: underline;\n        }\n        .separator {\n        color:black !important;\n        font-weight:600;\n        }\n        .last {\n        color:black !important;\n        font-weight:600;\n        }\n        @media screen and (max-width:1034px) {\n        .author_links {\n        margin-right:auto;\n        }\n        .reviewer-info {\n        width: 100%;\n        }\n        }\n        @media screen and (max-width:767px) {\n        .language_switcher {\n        display: flex;\n        margin-top: 5px;\n        }\n        }\n        @media screen and (max-width:490px) {\n        .review-lowres {\n        display:flex !important;\n        }\n        .review-highres {\n        display:none !important;\n        }\n        .author_links {\n        margin-right:36px !important;\n        } \n        }\n    <\/style>\n    <div><nav aria-label=\"breadcrumbs\" class=\"rank-math-breadcrumb\"><p><span class=\"last\">Home<\/span><\/p><\/nav><\/div>\n    \n    <div class=\"info-container\">\n    <div class=\"post-info with-reviewer\">\n        <div class=\"post-info-main\">\n            <div class=\"author-avatar\">\n                <picture>\n                        <source\n                            srcset=\"https:\/\/devsdata.com\/wp-content\/uploads\/2024\/02\/ani-gasparyan-min.webp\" type=image\/webp> \n                        <source \n                            srcset=\"https:\/\/devsdata.com\/wp-content\/uploads\/2024\/02\/ani-gasparyan-min.jpg\" type=\"image\/jpeg\">\n                        <img decoding=\"async\" \n                            class=\"avatar lazyload\"\n                            width=\"64\" \n                            height=\"64\"\n                            src=\"https:\/\/devsdata.com\/wp-content\/uploads\/2024\/02\/ani-gasparyan-min.jpg\"\n                            alt=\"avatar\"\n                            loading=\"lazy\"\n                            title=\"Ani Gasparyan\"\n                        >\n                <\/picture>\n            <\/div>\n            <div style=\"display:flex; flex-direction:column;margin-right:auto;\" class=\"author_links\">\n            <a href=\"\/author\/ani-gasparyan\/\" class=\"author-name\">Ani Gasparyan<\/a>\n            <ul class=\"author_socials\">\n            <li>\n                <a href=\"https:\/\/www.linkedin.com\/in\/ani-gasparyan-15a7b3157\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" aria-label=\"Ani Gasparyan on Linkedin\">\n                    <svg version=\"1.0\" fill=\"currentColor\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 448 512\" aria-hidden=\"true\">\n                            <g id=\"linkedin5_layer\">\n                                <path d=\"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z\" data-hs-event-238572417=\"1\"><\/path>\n                            <\/g>\n                        <\/svg>\n                <\/a>\n            <\/li>\n            <li>\n                <a href=\"https:\/\/twitter.com\/ani_l19\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" aria-label=\"Ani Gasparyan on Twitter\">\n                    <svg viewBox=\"0 0 512 512\" class=\"scriptlesssocialsharing__icon twitter\" fill=\"currentColor\" height=\"1em\" width=\"1em\" aria-hidden=\"true\" focusable=\"false\" role=\"img\">\n                            <path d=\"M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z\"><\/path>\n                        <\/svg>\n                <\/a>\n            <\/li>\n            <li>\n                <a href=\"https:\/\/www.crunchbase.com\/person\/ani-gasparyan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" aria-label=\"Ani Gasparyan on Crunchbase\">\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"currentColor\" width=\"800px\" height=\"800px\" viewBox=\"0 0 24 24\" role=\"img\">\n                            <title>Crunchbase icon<\/title>\n                            <path d=\"M21.6 0H2.4A2.41 2.41 0 0 0 0 2.4v19.2A2.41 2.41 0 0 0 2.4 24h19.2a2.41 2.41 0 0 0 2.4-2.4V2.4A2.41 2.41 0 0 0 21.6 0zM7.045 14.465A2.11 2.11 0 0 0 9.84 13.42h1.66a3.69 3.69 0 1 1 0-1.75H9.84a2.11 2.11 0 1 0-2.795 2.795zm11.345.845a3.55 3.55 0 0 1-1.06.63 3.68 3.68 0 0 1-3.39-.38v.38h-1.51V5.37h1.5v4.11a3.74 3.74 0 0 1 1.8-.63H16a3.67 3.67 0 0 1 2.39 6.46zm-.223-2.766a2.104 2.104 0 1 1-4.207 0 2.104 2.104 0 0 1 4.207 0z\"\/>\n                        <\/svg>\n                <\/a>\n            <\/li><\/ul>\n            <\/div>\n            <div class=\"reviewer-info\"> \n                                                                            <span style=\"color:#6D7082;\" class=\"\">\n                Last updated on \n                28. Februar 2026 \n                <span class=\"post-info-separator\">| <\/span> \n                12 min read\n                \n            <\/span>\n                            <\/div>\n        \n        <\/div>\n    <\/div>\n    <div class=\"bookmark\">\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2020\/08\/bookmark-add-2-1.svg\" alt=\"bookmark\" title=\"\">\n    <\/div>\n    <div class=\"tags\"><\/div>\n    <\/div>\n    <script type=\"module\" defer>\n      document.addEventListener(\"DOMContentLoaded\", function () {\n    \/\/ Get the current path from the URL\n    const path = window.location.pathname;\n\n    \/\/ Check if it starts with \/case-studies\n        if (path.startsWith(\"\/case-studies\")) {\n        const tagsElement = document.querySelector(\".tags\");\n        if (tagsElement) {\n        tagsElement.style.marginBottom = \"0\";\n        }\n        }\n        });\n        Array.from(document.getElementsByClassName(\"separator\")).forEach(el => {\n            el.textContent = \" > \";\n        });\n\n            var wpmlToggle = document.querySelector(\".language_switcher .wpml-ls-item-toggle\");\n            if (wpmlToggle) {\n                wpmlToggle.addEventListener(\"click\", function(e) {\n                    e.preventDefault();\n                    e.stopPropagation();\n                    var currentLang = this.closest(\".wpml-ls-current-language\");\n                    if (currentLang) {\n                        currentLang.classList.toggle(\"wpml-dropdown-open\");\n                    }\n                });\n                document.addEventListener(\"click\", function(e) {\n                    var openDropdown = document.querySelector(\".wpml-ls-current-language.wpml-dropdown-open\");\n                    if (openDropdown && !openDropdown.contains(e.target)) {\n                        openDropdown.classList.remove(\"wpml-dropdown-open\");\n                    }\n                });\n            }\n\n            var languageList = document.querySelector(\"#language-list\");\n            var dropdownArrow = document.querySelector(\".dropdown-arrow\");\n\n            if(languageList){\n                languageList.addEventListener(\"click\", () => {\n                    languageList.classList.toggle(\"active\");\n                    document.querySelector(\"#arrow\").classList.toggle(\"rotated\");\n                })\n            }\n                \n            function handleViewportChange() {\n                if(languageList) {\n                    if (window.innerWidth < 1280) {\n                        if(!languageList.classList.contains(\"mobile\")) {\n                            languageList.classList.add(\"mobile\");\n                            dropdownArrow.classList.add(\"mobile\");\n                        }\n                    } else {\n                        if(languageList.classList.contains(\"mobile\")) {\n                            languageList.classList.remove(\"mobile\");\n                            dropdownArrow.classList.remove(\"mobile\");\n                        }\n                    }\n                };\n            };\n\n            \/\/ If there is a small\/no space between reviewer and author name, reviewer moves to the first row\n            function update_post_info_layout() {\n                const author_name_element = document.querySelector(\".author-name\");\n                const reviewer_element = document.querySelector(\".reviewer-info\");\n                const post_info_container = document.querySelector(\".post-info\");\n\n                if(reviewer_element) {\n                    let distance_next_to_author, reviewer_fits_next_to_author; \n                    if(post_info_container && author_name_element) {\n                        distance_next_to_author = post_info_container.getBoundingClientRect().right - author_name_element.getBoundingClientRect().right;\n                        reviewer_fits_next_to_author = distance_next_to_author - reviewer_element.clientWidth >= 15;\n                    }\n\n                    if(!reviewer_fits_next_to_author) {\n                        reviewer_element.classList.add(\"the_first_row\");\n                    } else if (reviewer_fits_next_to_author && reviewer_element.classList.contains(\"the_first_row\")) {\n                        reviewer_element.classList.remove(\"the_first_row\");\n                    }\n                }\n            }\n\n            handleViewportChange();\n            update_post_info_layout();\n             \n            window.addEventListener(\"resize\", () => {\n                handleViewportChange();\n                update_post_info_layout();\n            });\n    <\/script>\n\n        <span class=\"img-container\">\n            <picture class=\"\" style=\"filter: grayscale(0)\">\n                <source media=\"(max-width: 500px)\" srcset=\"\/wp-content\/uploads\/2026\/02\/web_scr_small.webp\" type=\"image\/webp\">\n                <source media=\"(max-width: 500px)\" srcset=\"\/wp-content\/uploads\/2026\/02\/web_scr_small.jpg\" type=\"image\/jpg\">\n                <source srcset=\"\/wp-content\/uploads\/2026\/02\/web_scr.webp\" type=\"image\/webp\">\n                <source srcset=\"\/wp-content\/uploads\/2026\/02\/web_scr.jpg\" type=\"image\/jpg\">\n                <img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/02\/web_scr.jpg\" width=\"640\" height=\"357\" alt=\"kroll main image testimonial\" title=\"\">\n            <\/picture>\n        <\/span>\n    \n<div class=\"download-button-container\"><a class=\"case-study-download-button\" href=\"\/wp-content\/themes\/intentionally-blank\/assets\/case_studies\/web_scraping\/extensive_web_scraping_case_study.pdf\" target=\"_blank\" rel=\"noopener\">Download as PDF<\/a><\/div>\n<ul>\n<li>DevsData LLC partnered with Kroll, Inc. to build advanced web scraping systems capable of collecting complex data from financial, real estate, and media platforms.<\/li>\n<li>The project automated large-scale research and delivered real-time structured datasets, helping Kroll\u2019s analysts work faster and make data-driven decisions with greater precision.<\/li>\n<\/ul>\n<h2>Introduction<\/h2>\n<p><a href=\"https:\/\/www.kroll.com\/en\" target=\"_blank\" rel=\"noopener nofollow\">Kroll, Inc.<\/a> approached <a href=\"\/services\/\" target=\"_blank\" rel=\"noopener\">DevsData LLC<\/a> with a complex data challenge to extract and process information from multiple websites that were designed to resist automated collection. These sources included financial databases, eCommerce listings, real estate platforms, and unstructured media content. The client required a set of intelligent scrapers that could gather vast amounts of structured and unstructured data in real time, while maintaining accuracy, confidentiality, and operational efficiency.<\/p>\n<p>The project\u2019s goal was not only to automate manual research tasks but also to supply Kroll\u2019s internal analytics and risk intelligence platforms with continuously updated datasets used in market monitoring, compliance reviews, transaction analysis, and investigative research. DevsData LLC was selected for its proven record in developing resilient scraping systems capable of handling high-volume, protected sources. The collaboration brought together Kroll\u2019s domain expertise and DevsData LLC\u2019s advanced engineering skills to deliver a scalable, high-performance data extraction framework.\n        <span class=\"img-container\">\n            <picture class=\"open-picture\" style=\"filter: grayscale(0)\">\n                <source media=\"(max-width: 500px)\" srcset=\"\/wp-content\/uploads\/2026\/02\/Kroll_summary_small.webp\" type=\"image\/webp\">\n                <source media=\"(max-width: 500px)\" srcset=\"\/wp-content\/uploads\/2026\/02\/Kroll_summary_small.jpg\" type=\"image\/jpg\">\n                <source srcset=\"\/wp-content\/uploads\/2026\/02\/Kroll_summary.webp\" type=\"image\/webp\">\n                <source srcset=\"\/wp-content\/uploads\/2026\/02\/Kroll_summary.jpg\" type=\"image\/jpg\">\n                <img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/02\/Kroll_summary.jpg\" width=\"640\" height=\"357\" alt=\"Kroll project summary testimonial\" title=\"\">\n            <\/picture>\n        <\/span>\n    <\/p>\n<h2>Client overview<\/h2>\n<p>Kroll is a global leader in risk and financial advisory solutions, known for nearly a century of trusted expertise in governance, valuation, corporate research, and investigative analysis. With a team of over <span class=\"formatted-number\">6500<\/span> professionals across continents, the company uses analytical methods and technical systems to help clients navigate complex business environments and make informed decisions.<\/p>\n<p>Kroll\u2019s work spans risk management, compliance, transaction advisory, and strategic valuation. The firm supports clients during mergers, restructurings, disputes, and regulatory reviews by providing financial analysis, valuation reports, investigative research, and compliance assessments. These services help organizations identify financial, regulatory, and operational risks early in planning and transaction stages rather than after decisions are already made. Guided by values of integrity and accountability, Kroll has built long-term partnerships with leading organizations worldwide, providing them with the clarity and insight necessary to maintain a competitive advantage.<\/p>\n\n            <div class=\"schedule-consultation middle-scheduler\">\n                <div class=\"block-contact\">\n                    <p>Do you have IT outsourcing needs?<\/p>\n                <\/div>\n                <div class=\"contact-us-show schedule-consultation-button\">\n                    \ud83c\udfa7\n                    <span>Schedule a meeting<\/span>\n                <\/div>\n            <\/div>\n    \n<h2>Project scope<\/h2>\n<p>The collaboration covered the full design and implementation of multiple large-scale web scrapers tailored to Kroll\u2019s operational needs. <\/p>\n<p class=\"quote\">DevsData LLC\u2019s task was to gather data from numerous high-security, structurally complex websites across various industries, process it into a structured format, and deliver it to Kroll\u2019s analytical systems.<\/p>\n<p>This included the extraction of financial data, product pricing, and real estate information, as well as market and sentiment insights from media and social platforms, covering more than 30 protected websites and thousands of individual pages updated on a continuous basis. The project also required managing proxy rotation, captcha handling, and traffic throttling to regulate request rates and operate within site-specific technical limits. In addition, DevsData LLC implemented automation pipelines that transformed unstructured data into usable formats compatible with Kroll\u2019s internal data warehouse.<\/p>\n<p>The systems were designed to operate continuously, allowing Kroll to access refreshed datasets without manual intervention. Regular monitoring, performance tracking, and error-handling mechanisms were integrated to guarantee the reliability of the entire infrastructure.<\/p>\n<h2>Challenge<\/h2>\n<p>The main technical obstacle was the nature of the target websites themselves. Many had complex, dynamically rendered frontends, making data retrieval difficult without simulating user interactions. Others implemented strong anti-bot systems, captchas, and IP blacklisting mechanisms that prevented traditional scraping approaches from functioning effectively.<\/p>\n<p>Another challenge involved assembling a team with the right engineering expertise. This type of project required specialists fluent in Python, Selenium, Scrapy, BeautifulSoup, low-level HTTP requests, proxy rotation, and cloud-based deployment. Developers with this combination of skills are difficult to find, and the project needed professionals experienced in both large-scale scraping and secure data handling.<\/p>\n<p>In parallel with these technical constraints, the project involved client-facing and operational challenges. Kroll\u2019s internal stakeholders relied on the extracted data for live analytical workflows, which required frequent scope adjustments, priority shifts, and validation cycles as new sources were introduced. This created a need for continuous coordination between engineering teams and data analysts, detailed reporting on scraper performance, and rapid turnaround on data quality issues. The delivery process had to remain predictable and transparent while operating under strict confidentiality requirements and evolving compliance controls.<\/p>\n<p>In addition to these challenges, the client required a careful balance between minimizing server requests per session and achieving high data coverage without introducing excessive latency. In practice, this meant prioritizing critical data fields, tuning request frequency, and optimizing parsing logic to extract as much information as possible per request. Several sites had data deeply nested within HTML structures, requiring custom parsing logic and memory-efficient extraction methods. Additionally, strict confidentiality and operational security standards had to be maintained throughout the project lifecycle, in line with Kroll\u2019s internal compliance and governance procedures.<\/p>\n<h2>Our approach<\/h2>\n<p>Before development began, <a href=\"\/the-way-we-are-different\/\" target=\"_blank\" rel=\"noopener\">DevsData LLC<\/a> worked with Kroll\u2019s analytical and compliance teams to define data use cases, reporting dependencies, update frequency, and confidentiality constraints tied to live operational workflows. This pre-project phase included source mapping, field-level data definition, volume estimation, and validation criteria used in Kroll\u2019s internal risk, compliance, and research systems. These requirements formed the baseline for scraper design, data normalization rules, and deployment architecture.<\/p>\n<p>To meet these requirements, DevsData LLC developed a modular scraping architecture composed of separate components for data extraction, request orchestration, proxy and session management, and post-processing. Each scraper was custom-built to handle different site structures, response formats, and security layers while operating under Kroll\u2019s strict data protection protocols.<\/p>\n<p>A dedicated engineering team was assembled for this project, focusing on professionals experienced in large-scale scraping, secure data handling, and working with demanding online sources. This setup allowed the team to contribute to complex project requirements from the first weeks of the engagement.<\/p>\n<p>The team simulated human-like browsing behavior using <a href=\"https:\/\/www.selenium.dev\/documentation\/webdriver\/\" target=\"_blank\" rel=\"noopener nofollow\">Selenium WebDriver<\/a>, which allowed interaction with JavaScript-heavy websites. Premium proxy and <a href=\"https:\/\/www.cloudflare.com\/learning\/access-management\/what-is-a-vpn\/\" target=\"_blank\" rel=\"noopener nofollow\">VPN<\/a> networks were used to distribute requests across regions and prevent IP blocking. For sensitive operations, the system relied on low-level HTTP requests with session management to keep resource usage minimal. Automatic captcha solving was implemented for most types, excluding <a href=\"https:\/\/developers.google.com\/recaptcha\" target=\"_blank\" rel=\"noopener nofollow\">Google reCAPTCHA<\/a>, which required manual validation.<\/p>\n<p class=\"quote\">All scrapers were deployed across multiple Google Cloud instances, enabling parallel data collection and high throughput. Continuous communication between DevsData LLC\u2019s engineers and Kroll\u2019s in-house data specialists helped align extraction logic with analytical goals.<\/p>\n<p>Dedicated review cycles were held to validate field-level accuracy, confirm update frequency, and adjust source priorities as new investigative or compliance needs emerged. Data samples were reviewed against Kroll\u2019s internal reporting standards, and change requests were implemented through controlled release cycles to maintain stability while improving coverage and precision.<\/p>\n\n        <span class=\"img-container\">\n            <picture class=\"\" style=\"filter: grayscale(0)\">\n                <source media=\"(max-width: 500px)\" srcset=\"\/wp-content\/uploads\/2026\/02\/kroll3_small.webp\" type=\"image\/webp\">\n                <source media=\"(max-width: 500px)\" srcset=\"\/wp-content\/uploads\/2026\/02\/kroll3_small.jpg\" type=\"image\/jpg\">\n                <source srcset=\"\/wp-content\/uploads\/2026\/02\/kroll3.webp\" type=\"image\/webp\">\n                <source srcset=\"\/wp-content\/uploads\/2026\/02\/kroll3.jpg\" type=\"image\/jpg\">\n                <img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/02\/kroll3.jpg\" width=\"640\" height=\"357\" alt=\"Scraping screenshot testimonial\" title=\"\">\n            <\/picture>\n        <\/span>\n    \n<h2>Execution<\/h2>\n<p>Over the course of the engagement, DevsData LLC built and maintained several distinct scraping systems, each supporting specific workflows, such as investigative research, compliance monitoring, transaction analysis, and market intelligence reporting. The team\u2019s experience in complex data engineering projects has also been applied in other DevsData LLC engagements, including the Fastlane and <a href=\"\/case-studies\/it-recruitment-of-a-web3-contract-developer-and-project-manager\/\" target=\"_blank\" rel=\"noopener\">Emurgo<\/a> case studies, which involved large-scale backend systems, high-volume data processing, and technically demanding integration environments. The sections that follow outline the main systems built as part of this project.<\/p>\n<h3>Specialized scrapers for time-sensitive projects<\/h3>\n<p>For rapid data extraction, one lightweight system was developed within Kroll\u2019s data program that could be launched within days. One implementation supported an NLP-based analysis workflow used by Kroll for hedge fund research, where financial news was collected, scored, and categorized based on sentiment and relevance.<\/p>\n<h3>Secure retrieval of confidential data<\/h3>\n<p>A dedicated system was built within the same Kroll engagement to process responses related to 300 million SSNs through protected online forms. Ten virtual machines were deployed on Google Cloud, each configured to handle low-level HTTP requests with limited concurrency, allowing traffic to be distributed efficiently while minimizing detection risk.<\/p>\n<h3>Deep HTML and unstructured data extraction<\/h3>\n<p>Another system supported Kroll\u2019s market and media intelligence workflows by collecting data from large public databases such as Filmweb and Wikipedia. Using BeautifulSoup and Scrapy, the scrapers retrieved deeply embedded HTML content and navigated multiple page templates to assemble structured datasets across thousands of entries while keeping request volume and resource usage controlled.<\/p>\n<h3>Enhancing and maintaining Kroll\u2019s existing scrapers<\/h3>\n<p>DevsData LLC engineers refined Kroll\u2019s internal scraping tools, optimizing their logic, expanding coverage to additional data sources, and improving performance across confidential datasets. This involved code reviews, testing, and scaling measures to support sustained use across Kroll\u2019s analytical teams.<\/p>\n\n            <div class=\"schedule-consultation middle-scheduler\">\n                <div class=\"block-contact\">\n                    <p>Do you have IT outsourcing needs?<\/p>\n                <\/div>\n                <div class=\"contact-us-show schedule-consultation-button\">\n                    \ud83c\udfa7\n                    <span>Schedule a meeting<\/span>\n                <\/div>\n            <\/div>\n    \n<h3>Ecommerce and retail data aggregation<\/h3>\n<p>A separate set of scrapers was developed within Kroll\u2019s research workflows for more than 30 eCommerce websites. These systems gathered structured data on product categories, pricing, and availability while adapting to site-specific protection layers and layout changes.<\/p>\n<h2>Business impact<\/h2>\n<p>The partnership enabled Kroll to automate and streamline what had previously been a highly manual, fragmented data collection process. With the new scraping infrastructure, analysts and researchers can access structured datasets updated in real time, significantly reducing the turnaround time for market, risk, pricing, and operational reports.<\/p>\n<p>The automated pipelines replaced manual data gathering with a continuous, scalable system that securely handles high-volume requests. DevsData LLC worked closely with Kroll\u2019s data science and analytics teams to align extraction logic with modeling requirements, define normalization rules, and validate dataset structures before integration into analytical workflows. Data governance controls were implemented to manage access, versioning, and retention policies across confidential datasets. <\/p>\n<p>This collaboration allowed Kroll\u2019s data science teams to focus on interpretation and modeling rather than extraction and cleaning, improving both the speed and quality of their insights.<\/p>\n\n        <span class=\"img-container\">\n            <picture class=\"\" style=\"filter: grayscale(0)\">\n                <source media=\"(max-width: 500px)\" srcset=\"\/wp-content\/uploads\/2026\/02\/kroll4_small.webp\" type=\"image\/webp\">\n                <source media=\"(max-width: 500px)\" srcset=\"\/wp-content\/uploads\/2026\/02\/kroll4_small.jpg\" type=\"image\/jpg\">\n                <source srcset=\"\/wp-content\/uploads\/2026\/02\/kroll4.webp\" type=\"image\/webp\">\n                <source srcset=\"\/wp-content\/uploads\/2026\/02\/kroll4.jpg\" type=\"image\/jpg\">\n                <img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/02\/kroll4.jpg\" width=\"640\" height=\"357\" alt=\"Teck stack testimonial\" title=\"\">\n            <\/picture>\n        <\/span>\n    \n<h2>Results<\/h2>\n<p>The engagement with Kroll led to measurable improvements in data accuracy, processing speed, and research efficiency. <\/p>\n<p class=\"quote\">DevsData LLC\u2019s scraping infrastructure allowed the client to process more than 300 million confidential records securely and extract data from over 30 websites across finance, media, and retail sectors. The automation framework replaced manual research workflows with continuous data pipelines while maintaining compliance and system stability.<\/p>\n<p>All scrapers were deployed on Google Cloud using multiple virtual instances, enabling parallel data processing and real-time monitoring. Kroll\u2019s analytics teams could now access continuously updated datasets without relying on external vendors or manual input, which improved the precision and timeliness of their market intelligence. The collaboration has since evolved into an ongoing partnership focused on maintenance, refinement, and scaling of data systems as new requirements emerge.<\/p>\n<p>Key project outcomes are summarized below:<\/p>\n<table>\n<thead>\n<tr>\n<th>Category<\/th>\n<th>Outcome<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Confidential records processed<\/strong><\/td>\n<td>Over 300 million<\/td>\n<\/tr>\n<tr>\n<td><strong>Websites and sources scraped<\/strong><\/td>\n<td>More than 30<\/td>\n<\/tr>\n<tr>\n<td><strong>Cloud infrastructure<\/strong><\/td>\n<td>Google Cloud multi-instance deployment<\/td>\n<\/tr>\n<tr>\n<td><strong>Data freshness<\/strong><\/td>\n<td>Real-time updates<\/td>\n<\/tr>\n<tr>\n<td><strong>Project duration<\/strong><\/td>\n<td>Ongoing collaboration<\/td>\n<\/tr>\n<tr>\n<td><strong>Key technologies<\/strong><\/td>\n<td>Python (Requests, Selenium, Scrapy, BeautifulSoup), VPN rotation, Cloud task scheduling<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Contact us<\/h2>\n<p>If your organization depends on data-driven insights, accuracy and scalability are essential. <a href=\"\/services\/\" target=\"_blank\" rel=\"noopener\">DevsData LLC<\/a> helps global companies like Kroll transform complex, protected online sources into structured datasets ready for analysis.<\/p>\n<p>Our engineers specialize in secure, large-scale web scraping, data engineering, and automation for industries where precision and confidentiality are critical. Whether you need to build a new data pipeline or enhance an existing one, we can design a solution tailored to your operational goals.<\/p>\n<p>To discuss your project, contact us at <a href=\"mailto:general@devsdata.com\" target=\"_blank\" rel=\"noopener\">general@devsdata.com<\/a> or visit <a href='\/' target='_blank' rel=\"noopener\">www.devsdata.com<\/a>.<\/p>\n<div class=\"download-button-container\"><a class=\"case-study-download-button\" href=\"\/wp-content\/themes\/intentionally-blank\/assets\/case_studies\/web_scraping\/extensive_web_scraping_case_study.pdf\" target=\"_blank\" rel=\"noopener\">Download as PDF<\/a><\/div>\n<p>\n        <section class=\"author_section_container\">\n            \n            <p class=\"contact_on_twitter\">\n                Any questions or comments? Let me know on \n                <a href=\"https:\/\/twitter.com\/ani_l19\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Twitter\/X<\/a>.\n            <\/p> \n        \n            <div class=\"schedule-consultation\">\n                <div class=\"block-contact\">\n                    <p>Discover how IT recruitment and staffing can address your talent needs. Explore trending regions \n        like Poland, Portugal, Mexico, Brazil and more. <\/p>\n                <\/div>\n                <div class=\"contact-us-show schedule-consultation-button\">\n                    \ud83d\uddd3\ufe0f\n                    <span>Schedule a consultation<\/span>\n                <\/div>\n            <\/div>\n            <div class=\"author_section\">\n                <div class=\"author_photo_container\">\n                    <picture>\n                        <source srcset=\"https:\/\/devsdata.com\/wp-content\/uploads\/2024\/02\/ani-gasparyan-min.webp\" type=\"image\/webp\"> \n                        <source srcset=\"https:\/\/devsdata.com\/wp-content\/uploads\/2024\/02\/ani-gasparyan-min.jpg\" type=\"image\/jpeg\">\n                        <img decoding=\"async\" class=\"avatar lazyload\" width=\"64\" height=\"64\" src=\"https:\/\/devsdata.com\/wp-content\/uploads\/2024\/02\/ani-gasparyan-min.jpg\" alt=\"avatar\" loading=\"lazy\" title=\"Ani Gasparyan\" >\n                    <\/picture>\n                    <a class=\"read_full_bio\" href=\"\/author\/ani-gasparyan\/\" aria-label=\"Read more from Ani Gasparyan\">Read full bio<\/a>\n                <\/div>\n                <div class=\"author_info_container\">\n                    <div class=\"author_info\" data-role=\"Author\">\n                        <h4 id=\"author_title\">\n                            <a href=\"\/author\/ani-gasparyan\/\" aria-label=\"Read more from Ani Gasparyan\">Ani Gasparyan<\/a>\n                            <span class=\"position\">Senior Copywriter and marketer<\/span>\n                        <\/h4>\n                    <\/div>\n                <\/div>\n                <div class=\"author_about\">\n                    <span>Ani is a marketing enthusiast and content writer. With 8+ years of expertise in marketing, she succeeded in developing engaging marketing collaterals, including blog articles, social media content, and other promotional materials. With a keen eye for detail and a knack for storytelling, she thrives in crafting compelling content that resonates with the target audience.<\/span>\n                    <div class=\"links\">\n                        <ul class=\"author_socials\">\n            <li>\n                <a href=\"https:\/\/www.linkedin.com\/in\/ani-gasparyan-15a7b3157\/\" aria-label=\"Check out Ani Gasparyan on LinkedIn\" target=\"_blank\" rel=\"nofollow noreferrer noopener\">\n                    <svg version=\"1.0\" fill=\"currentColor\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 448 512\" aria-hidden=\"true\">\n                        <g id=\"linkedin5_layer\">\n                            <path d=\"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z\" data-hs-event-238572417=\"1\"><\/path>\n                        <\/g>\n                    <\/svg>\n                <\/a>\n            <\/li>\n            <li>\n                <a href=\"https:\/\/twitter.com\/ani_l19\" aria-label=\"Check out Ani Gasparyan on Twitter\" target=\"_blank\" rel=\"nofollow noreferrer noopener\">\n                    <svg viewBox=\"0 0 512 512\" class=\"scriptlesssocialsharing__icon twitter\" fill=\"currentColor\" height=\"1em\" width=\"1em\" aria-hidden=\"true\" focusable=\"false\" role=\"img\">\n                        <path d=\"M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z\"><\/path>\n                    <\/svg>\n                <\/a>\n            <\/li>\n            <li>\n                <a href=\"https:\/\/www.crunchbase.com\/person\/ani-gasparyan\" aria-label=\"Check out Ani Gasparyan on Chrunchbase\" target=\"_blank\" rel=\"nofollow noreferrer noopener\">\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"currentColor\" width=\"800px\" height=\"800px\" viewBox=\"0 0 24 24\" role=\"img\">\n                        <title>Crunchbase icon<\/title>\n                        <path d=\"M21.6 0H2.4A2.41 2.41 0 0 0 0 2.4v19.2A2.41 2.41 0 0 0 2.4 24h19.2a2.41 2.41 0 0 0 2.4-2.4V2.4A2.41 2.41 0 0 0 21.6 0zM7.045 14.465A2.11 2.11 0 0 0 9.84 13.42h1.66a3.69 3.69 0 1 1 0-1.75H9.84a2.11 2.11 0 1 0-2.795 2.795zm11.345.845a3.55 3.55 0 0 1-1.06.63 3.68 3.68 0 0 1-3.39-.38v.38h-1.51V5.37h1.5v4.11a3.74 3.74 0 0 1 1.8-.63H16a3.67 3.67 0 0 1 2.39 6.46zm-.223-2.766a2.104 2.104 0 1 1-4.207 0 2.104 2.104 0 0 1 4.207 0z\"\/>\n                    <\/svg>\n                <\/a>\n            <\/li>\n            <li>\n                <a href=\"mailto:ani.gasparyan@devsdata.com\" aria-label=\"Email Ani Gasparyan\">\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M64 112c-8.8 0-16 7.2-16 16v22.1l172.5 141.6c20.7 17 50.4 17 71.1 0L464 150.1V128c0-8.8-7.2-16-16-16zM48 212.2V384c0 8.8 7.2 16 16 16h384c8.8 0 16-7.2 16-16V212.2L322 328.8c-38.4 31.5-93.7 31.5-132 0zM0 128c0-35.3 28.7-64 64-64h384c35.3 0 64 28.7 64 64v256c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64z\"\/><\/svg>\n                <\/a>\n            <\/li><\/ul>\n                        <a class=\"recruitment_link\" href=\"\/recruitment\/\" target=\"_blank\" rel=\"noopener noreferrer\">\n                            Read more about our IT staffing services\n                            <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"https:\/\/www.w3.org\/2000\/svg\">\n                                <path d=\"M5 12H19\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\n                                <path d=\"M12 5L19 12L12 19\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\n                            <\/svg>\n                        <\/a>\n                    <\/div>\n                <\/div>\n            <\/div>\n            <div class=\"tags-author \">\n                \n            <\/div>\n        <\/section>\n    <br \/>\n\n        <script>\n            document.addEventListener(\"DOMContentLoaded\", function() {\n                function debounceMessagePopUp(func, timeout = 300) {\n                    let timer;\n                    return (...args) => {\n                        clearTimeout(timer);\n                        timer = setTimeout(() => {\n                            func.apply(this, args);\n                        }, timeout);\n                    };\n                }\n\n                const toastPopUp = document.getElementById(\"copy-toast-meet-us\");\n                const copyEmailPopButtons = document.querySelectorAll(\".copy-email-button-meet-us\");\n\n                const debouncedMessagePopUp = debounceMessagePopUp(() => toastPopUp.classList.remove(\"toast-active\"), 2000);\n\n                for (let i = 0; i < copyEmailPopButtons.length; i++) {\n                    copyEmailPopButtons[i].addEventListener(\"click\", () => copyEmailFunctionPopUp(copyEmailPopButtons[i]));\n                }\n\n                function copyEmailFunctionPopUp(button) {\n                    navigator.clipboard.writeText(button.previousElementSibling.innerHTML);\n                    toastPopUp.querySelector(\"span\").innerHTML = \"Email copied\";\n                    toastPopUp.classList.add(\"toast-active\");\n                    debouncedMessagePopUp();\n                }\n        })\n<\/script>\n<br \/>\n<\/section>\n","protected":false},"author":27,"featured_media":154026,"template":"","class_list":["post-149961","case_study","type-case_study","status-publish","has-post-thumbnail","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/devsdata.com\/de\/wp-json\/wp\/v2\/case_study\/149961","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devsdata.com\/de\/wp-json\/wp\/v2\/case_study"}],"about":[{"href":"https:\/\/devsdata.com\/de\/wp-json\/wp\/v2\/types\/case_study"}],"author":[{"embeddable":true,"href":"https:\/\/devsdata.com\/de\/wp-json\/wp\/v2\/users\/27"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devsdata.com\/de\/wp-json\/wp\/v2\/media\/154026"}],"wp:attachment":[{"href":"https:\/\/devsdata.com\/de\/wp-json\/wp\/v2\/media?parent=149961"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}