gocolly

    gocolly/colly

    #828 this week

    Elegant Scraper and Crawler Framework for Golang

    automation
    crawler
    crawling
    framework
    go
    golang
    Go
    Apache-2.0
    25.3K stars
    1.8K forks
    25.3K GitHub watchers
    Updated 6/24/2026
    View on GitHub

    Backblaze Generative Media Hackathon

    Build the next generation of AI media apps with Genblaze, stored on Backblaze B2. $10,000 in prizes.

    Enter the hackathon

    Loading star history...

    Use Cases & Benefits

    • Provides a fast and elegant web scraping and crawling framework for Go developers to extract structured data from websites.
    • Offers a clean API with high performance, automatic cookie handling, concurrency control, and support for distributed scraping.
    • Use for building custom web crawlers to collect data from multiple linked web pages efficiently.
    • Use for automating data mining tasks that require handling sessions, delays, and robots.txt compliance.
    • Use for creating scalable scrapers that run synchronously or asynchronously with caching and encoding support.

    About colly

    Colly

    Lightning Fast and Elegant Scraping Framework for Gophers

    Colly provides a clean interface to write any kind of crawler/scraper/spider.

    With Colly you can easily extract structured data from websites, which can be used for a wide range of applications, like data mining, data processing or archiving.

    GoDoc Backers on Open Collective Sponsors on Open Collective build status report card view examples Code Coverage FOSSA Status Twitter URL


    Features

    • Clean API
    • Fast (>1k request/sec on a single core)
    • Manages request delays and maximum concurrency per domain
    • Automatic cookie and session handling
    • Sync/async/parallel scraping
    • Caching
    • Automatic encoding of non-unicode responses
    • Robots.txt support
    • Distributed scraping
    • Configuration via environment variables
    • Extensions

    Example

    func main() {
    	c := colly.NewCollector()
    
    	// Find and visit all links
    	c.OnHTML("a[href]", func(e *colly.HTMLElement) {
    		e.Request.Visit(e.Attr("href"))
    	})
    
    	c.OnRequest(func(r *colly.Request) {
    		fmt.Println("Visiting", r.URL)
    	})
    
    	c.Visit("http://go-colly.org/")
    }
    

    See examples folder for more detailed examples.

    Installation

    Add colly to your go.mod file:

    module github.com/x/y
    
    go 1.14
    
    require (
            github.com/gocolly/colly/v2 latest
    )
    

    Bugs

    Bugs or suggestions? Visit the issue tracker or join #colly on freenode

    Other Projects Using Colly

    Below is a list of public, open source projects that use Colly:

    If you are using Colly in a project please send a pull request to add it to the list.

    Contributors

    This project exists thanks to all the people who contribute. [Contribute].

    Backers

    Thank you to all our backers! 🙏 [Become a backer]

    Sponsors

    Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

    License

    FOSSA Status

    Discover Repositories

    Search across tracked repositories by name or description