Lightweight Java/Kotlin library for web search + clean text extraction using W3C html2txt.
- π Web search using Brave
- π Website text extraction
- π Raw search output
- βοΈ Clean text (no links)
- π Link extraction
- π Structured parsed results (title, link, snippet)
- π Pagination support
- β Works in Java & Kotlin
- β‘ Lightweight (no heavy dependencies)
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
implementation 'com.github.simpsearch:simpsearch-java:1.0.0'
}<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependency>
<groupId>com.github.simpsearch</groupId>
<artifactId>simpsearch-java</artifactId>
<version>1.0.0</version>
</dependency>import com.simpsearch.SimpSearch;
public class Main {
public static void main(String[] args) {
SimpSearch client = new SimpSearch();
System.out.println(client.parsed("hello world"));
}
}import com.simpsearch.SimpSearch
fun main() {
val client = SimpSearch()
println(client.parsed("hello world"))
}-
Your query goes to Brave Search
-
Search page is sent to W3C html2txt
-
HTML is converted into clean readable text
-
SimpSearch extracts:
- Titles
- Links
- Snippets
import com.simpsearch.SimpSearch;
import java.util.*;
public class Example1 {
public static void main(String[] args) {
SimpSearch client = new SimpSearch();
List<Map<String, String>> results =
client.parsed("java tutorial");
for (Map<String, String> item : results) {
System.out.println("Title: " + item.get("title"));
System.out.println("Link: " + item.get("link"));
System.out.println("Snippet: " + item.get("snippet"));
System.out.println("------------");
}
}
}import com.simpsearch.SimpSearch;
public class Example2 {
public static void main(String[] args) {
SimpSearch client = new SimpSearch();
String raw = client.raw("open source tools");
System.out.println(raw);
}
}import com.simpsearch.SimpSearch;
public class Example3 {
public static void main(String[] args) {
SimpSearch client = new SimpSearch();
String text = client.text("machine learning");
System.out.println(text);
}
}import com.simpsearch.SimpSearch;
import java.util.*;
public class Example4 {
public static void main(String[] args) {
SimpSearch client = new SimpSearch();
List<String> links = client.links("best websites");
for (String link : links) {
System.out.println(link);
}
}
}import com.simpsearch.SimpSearch;
public class Example5 {
public static void main(String[] args) {
SimpSearch client = new SimpSearch();
String content = client.extract("https://example.com");
System.out.println(content);
}
}import com.simpsearch.SimpSearch;
public class Example6 {
public static void main(String[] args) {
SimpSearch client = new SimpSearch();
String content = client.extract(
"https://example.com",
true,
false
);
System.out.println(content);
}
}import com.simpsearch.SimpSearch;
public class Example7 {
public static void main(String[] args) {
SimpSearch client = new SimpSearch();
String content = client.extract(
"https://example.com",
false,
true
);
System.out.println(content);
}
}import com.simpsearch.SimpSearch;
import java.util.*;
public class Example8 {
public static void main(String[] args) {
SimpSearch client = new SimpSearch();
List<Map<String, String>> page1 =
client.parsed("ai tools", 0);
List<Map<String, String>> page2 =
client.parsed("ai tools", 10);
System.out.println("Page 1:");
for (Map<String, String> item : page1) {
System.out.println(item.get("title"));
}
System.out.println("\nPage 2:");
for (Map<String, String> item : page2) {
System.out.println(item.get("title"));
}
}
}import com.simpsearch.SimpSearch;
import java.util.*;
public class Example9 {
public static void main(String[] args) {
SimpSearch client = new SimpSearch();
List<String> links =
client.links("java frameworks");
if (!links.isEmpty()) {
String firstLink = links.get(0);
System.out.println("Extracting from: " + firstLink);
String content = client.extract(firstLink);
System.out.println(content);
}
}
}import com.simpsearch.SimpSearch;
public class Example10 {
public static void main(String[] args) {
SimpSearch client = new SimpSearch();
try {
String result = client.extract("invalid-url");
System.out.println(result);
} catch (Exception e) {
System.out.println("Error occurred:");
System.out.println(e.getMessage());
}
}
}import com.simpsearch.SimpSearch
fun main() {
val client = SimpSearch()
val results = client.parsed("android development")
for (item in results) {
println("Title: ${item["title"]}")
println("Link: ${item["link"]}")
println("Snippet: ${item["snippet"]}")
println("------------")
}
}| Method | Description |
|---|---|
| raw(query) | Full raw text |
| text(query) | Clean text (links removed) |
| links(query) | Extract only links |
| parsed(query) | Structured results |
| extract(url) | Website text extraction |
- Internet connection required
- Uses Brave Search + W3C html2txt
- Avoid too many rapid requests (rate limits may apply)
Contributions are welcome!
- Fork the repo
- Create a new branch
- Make changes
- Submit a pull request
MIT License
SimpSearch is designed to be simple, fast, and beginner-friendly.
If you're learning:
- Web scraping
- Java networking
- Text processing
π This library is a great starting point.
Happy coding π