Ok, I guess that we are really off-topic, but I yesterday created this function:
determineGender[str_] :=
If[StringContainsQ[#[[2]], "error"],
"Name not found!",
{"gender" -> StringSplit[#[[-5 ;; -3]][[1]], {"<gender>", "</gender>"}][[2]],
"male" -> StringSplit[#[[-5 ;; -3]][[2]], {"<male>", "</male>"}][[2]] ,
"female" -> StringSplit[#[[-5 ;; -3]][[3]], {"<female>", "</female>"}][[2]]}] &
@(URLExecute["http://www.thomas-bayer.com/restnames/name.groovy?name=" <> str, "Data"])
Now
determineGender["Heike"]
gives:
{"gender" -> "unisex name (can be any gender)", "male" -> "true", "female" -> "true"}
and
determineGender["Szabolcs"]
gives
{"gender" -> "male first name", "male" -> "true", "female" -> "false"}
and
determineGender["Felicia"]
gives
{"gender" -> "female first name", "male" -> "false", "female" -> "true"}
Cheers,
Marco